Skip to content

Conversation

philipch07
Copy link
Member

@philipch07 philipch07 commented Apr 27, 2025

The deserializer is a qol feature for people using amf0.

The current amf0 visitor functions do not properly call the corresponding visit functions, for example, an i8 currently calls self.deserialize_i64(visitor) (incorrect) instead of self.deserialize_i8(visitor) (correct).

For more on the above topic, see the Notion doc. Just a heads up that it's also missing a rule which is mentioned in Troy's other #441 (comment)

Additionally this PR aims to address the following from Troy's comment (see below):

We should make [the Amf0Object] a wrapper instead of a type def.

So right now this is assigned to be a BTreeMap, this is less than ideal because in the future we might want to preserve order strictly (ie an IndexMap) and that would be a breaking change. Instead we should make a new structure called Amf0Object and then internally we have a BTreeMap and then we provide a bunch of helper functions reexporting the BTreeMap's behaviours (len, is_empty, iter, into_iter, get, get_mut, remove, insert, from_iter, etc)

@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch from e0d9c72 to a70a46d Compare April 28, 2025 00:05
Copy link

cloudflare-workers-and-pages bot commented Apr 28, 2025

Deploying scuffle-docusaurus-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 51e201e
Status: ✅  Deploy successful!
Preview URL: https://42898d9c.scuffle-docusaurus-docs.pages.dev
Branch Preview URL: https://pr-441.scuffle-docusaurus-docs.pages.dev

View logs

@TroyKomodo TroyKomodo self-requested a review April 28, 2025 00:14
Copy link
Member

@TroyKomodo TroyKomodo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good first steps

Copy link

cloudflare-workers-and-pages bot commented Apr 28, 2025

Deploying scuffle-docrs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 51e201e
Status: ✅  Deploy successful!
Preview URL: https://4c3f1547.scuffle-docrs.pages.dev
Branch Preview URL: https://pr-441.scuffle-docrs.pages.dev

View logs

Copy link

codecov bot commented Apr 28, 2025

❌ 4 Tests Failed:

Tests completed Failed Passed Skipped
1076 4 1072 0
View the top 3 failed test(s) by shortest run time
scuffle-amf0::value::tests::roundtrip_enum_unit
Stack Traces | 0.003s run time
thread 'value::tests::roundtrip_enum_unit' panicked at .../amf0/src/value.rs:981:94:
called `Result::unwrap()` on an `Err` value: Custom("invalid type: string \"Unit\", expected enum TestEnum")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
scuffle-amf0::value::tests::roundtrip_enum_map
Stack Traces | 0.014s run time
thread 'value::tests::roundtrip_enum_map' panicked at .../amf0/src/value.rs:1067:74:
called `Result::unwrap()` on an `Err` value: Io(Custom { kind: UnexpectedEof, error: "Not enough data" })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
scuffle-amf0::value::tests::roundtrip_enum_struct
Stack Traces | 0.014s run time
thread 'value::tests::roundtrip_enum_struct' panicked at .../amf0/src/value.rs:1023:94:
called `Result::unwrap()` on an `Err` value: Custom("invalid type: string \"Struct\", expected enum TestEnum")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch from 3e3dccf to 5f2294a Compare April 29, 2025 00:08
@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch 2 times, most recently from 19cf429 to da75542 Compare May 16, 2025 14:48
@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch from c9acbd3 to 8e56bdd Compare May 26, 2025 18:19
Copy link
Contributor

github-actions bot commented May 26, 2025

✅ Release Checks Passed

⭐ Package Changes

  • scuffle-amf0: ⚠️ Breaking Change

    Cargo semver-checks details
    --- failure method_requires_different_generic_type_params: method now requires a different number of generic type parameters ---
    
    Description:
    A method now requires a different number of generic type parameters than it used to. Uses of this method that supplied the previous number of generic types will be broken.
            ref: https://doc.rust-lang.org/reference/items/generics.html
           impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/method_requires_different_generic_type_params.ron
    
    Failed in:
      scuffle_amf0::encoder::Amf0Encoder::encode_array takes 2 generic types instead of 0, in ./crates/amf0/src/encoder.rs:87
      scuffle_amf0::Amf0Encoder::encode_array takes 2 generic types instead of 0, in ./crates/amf0/src/encoder.rs:87
    
  • scuffle-bytes-util: 🛠️ Compatiable Change

  • 🔒 xtask: 🛠️ Compatiable Change

cargo xtask release check
    Updating crates.io index
 Downloading crates ...
  Downloaded block-buffer v0.10.4
  Downloaded anstyle-parse v0.2.7
  Downloaded anstyle v1.0.11
  Downloaded camino v1.1.10
  Downloaded cargo-platform v0.2.0
  Downloaded anyhow v1.0.98
  Downloaded anstream v0.6.19
  Downloaded aho-corasick v1.1.3
  Downloaded autocfg v1.5.0
  Downloaded anstyle-query v1.1.3
  Downloaded writeable v0.6.1
  Downloaded utf8parse v0.2.2
  Downloaded utf8_iter v1.0.4
  Downloaded unicode-xid v0.2.6
  Downloaded zerofrom v0.1.6
  Downloaded zerovec-derive v0.11.1
  Downloaded zerofrom-derive v0.1.6
  Downloaded yoke v0.8.0
  Downloaded url v2.5.4
  Downloaded zerotrie v0.2.2
  Downloaded indent_write v2.2.0
  Downloaded zerovec v0.11.2
  Downloaded litemap v0.8.0
  Downloaded idna v1.0.3
  Downloaded matchers v0.1.0
  Downloaded minijinja v2.10.2
  Downloaded heck v0.5.0
  Downloaded winnow v0.7.11
  Downloaded nu-ansi-term v0.46.0
  Downloaded log v0.4.27
  Downloaded serde-untagged v0.1.7
  Downloaded ordered-float v2.10.1
  Downloaded is_terminal_polyfill v1.70.1
  Downloaded icu_provider v2.0.0
  Downloaded num-traits v0.2.19
  Downloaded num_cpus v1.17.0
  Downloaded stable_deref_trait v1.2.0
  Downloaded indexmap v2.9.0
  Downloaded sha2 v0.10.9
  Downloaded semver v1.0.26
  Downloaded typeid v1.0.3
  Downloaded thread_local v1.1.9
  Downloaded toml_datetime v0.6.11
  Downloaded tracing-core v0.1.34
  Downloaded tracing-log v0.2.0
  Downloaded crypto-common v0.1.6
  Downloaded serde-value v0.7.0
  Downloaded icu_normalizer v2.0.0
  Downloaded strsim v0.11.1
  Downloaded serde v1.0.219
  Downloaded thiserror-impl v2.0.12
  Downloaded toml_write v0.1.2
  Downloaded toml v0.8.23
  Downloaded sharded-slab v0.1.7
  Downloaded tracing v0.1.41
  Downloaded regex-automata v0.1.10
  Downloaded regex-syntax v0.6.29
  Downloaded icu_properties_data v2.0.1
  Downloaded hashbrown v0.15.4
  Downloaded clap_builder v4.5.40
  Downloaded tracing-subscriber v0.3.19
  Downloaded libc v0.2.174
  Downloaded chrono v0.4.41
  Downloaded syn v2.0.104
  Downloaded icu_normalizer_data v2.0.0
  Downloaded regex-syntax v0.8.5
  Downloaded icu_locale_core v2.0.0
  Downloaded icu_collections v2.0.0
  Downloaded erased-serde v0.4.6
  Downloaded clap v4.5.40
  Downloaded proc-macro2 v1.0.95
  Downloaded icu_properties v2.0.1
  Downloaded cpufeatures v0.2.17
  Downloaded clap_derive v4.5.40
  Downloaded serde_derive v1.0.219
  Downloaded iana-time-zone v0.1.63
  Downloaded cargo-util-schemas v0.2.0
  Downloaded hex v0.4.3
  Downloaded generic-array v0.14.7
  Downloaded form_urlencoded v1.2.1
  Downloaded displaydoc v0.2.5
  Downloaded clap_lex v0.7.5
  Downloaded cfg-if v1.0.1
  Downloaded regex-automata v0.4.9
  Downloaded cargo_metadata v0.20.0
  Downloaded serde_spanned v0.6.9
  Downloaded fmtools v0.1.2
  Downloaded ryu v1.0.20
  Downloaded quote v1.0.40
  Downloaded home v0.5.11
  Downloaded tracing-attributes v0.1.30
  Downloaded toml_edit v0.22.27
  Downloaded potential_utf v0.1.2
  Downloaded equivalent v1.0.2
  Downloaded digest v0.10.7
  Downloaded thiserror-impl v1.0.69
  Downloaded thiserror v1.0.69
  Downloaded smallvec v1.15.1
  Downloaded serde_json v1.0.140
  Downloaded regex v1.11.1
  Downloaded percent-encoding v2.3.1
  Downloaded tinystr v0.8.1
  Downloaded thiserror v2.0.12
  Downloaded synstructure v0.13.2
  Downloaded overload v0.1.1
  Downloaded colorchoice v1.0.4
  Downloaded once_cell v1.21.3
  Downloaded memchr v2.7.5
  Downloaded pin-project-lite v0.2.16
  Downloaded lazy_static v1.5.0
  Downloaded itoa v1.0.15
  Downloaded unicode-ident v1.0.18
  Downloaded typenum v1.18.0
  Downloaded yoke-derive v0.8.0
  Downloaded idna_adapter v1.2.1
  Downloaded version_check v0.9.5
   Compiling proc-macro2 v1.0.95
   Compiling unicode-ident v1.0.18
   Compiling serde v1.0.219
   Compiling stable_deref_trait v1.2.0
   Compiling litemap v0.8.0
   Compiling writeable v0.6.1
   Compiling icu_properties_data v2.0.1
   Compiling icu_normalizer_data v2.0.0
   Compiling autocfg v1.5.0
   Compiling version_check v0.9.5
   Compiling smallvec v1.15.1
   Compiling typenum v1.18.0
   Compiling typeid v1.0.3
   Compiling hashbrown v0.15.4
   Compiling equivalent v1.0.2
   Compiling generic-array v0.14.7
   Compiling thiserror v1.0.69
   Compiling utf8parse v0.2.2
   Compiling num-traits v0.2.19
   Compiling toml_write v0.1.2
   Compiling utf8_iter v1.0.4
   Compiling winnow v0.7.11
   Compiling percent-encoding v2.3.1
   Compiling once_cell v1.21.3
   Compiling semver v1.0.26
   Compiling quote v1.0.40
   Compiling tracing-core v0.1.34
   Compiling syn v2.0.104
   Compiling indexmap v2.9.0
   Compiling form_urlencoded v1.2.1
   Compiling anstyle-parse v0.2.7
   Compiling is_terminal_polyfill v1.70.1
   Compiling anstyle v1.0.11
   Compiling thiserror v2.0.12
   Compiling colorchoice v1.0.4
   Compiling cfg-if v1.0.1
   Compiling anstyle-query v1.1.3
   Compiling ordered-float v2.10.1
   Compiling libc v0.2.174
   Compiling regex-syntax v0.6.29
   Compiling serde_json v1.0.140
   Compiling camino v1.1.10
   Compiling regex-syntax v0.8.5
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling anstream v0.6.19
   Compiling strsim v0.11.1
   Compiling lazy_static v1.5.0
   Compiling heck v0.5.0
   Compiling log v0.4.27
   Compiling itoa v1.0.15
   Compiling ryu v1.0.20
   Compiling anyhow v1.0.98
   Compiling memchr v2.7.5
   Compiling clap_lex v0.7.5
   Compiling overload v0.1.1
   Compiling pin-project-lite v0.2.16
   Compiling unicode-xid v0.2.6
   Compiling clap_builder v4.5.40
   Compiling nu-ansi-term v0.46.0
   Compiling tracing-log v0.2.0
   Compiling sharded-slab v0.1.7
   Compiling digest v0.10.7
   Compiling thread_local v1.1.9
   Compiling cpufeatures v0.2.17
   Compiling iana-time-zone v0.1.63
   Compiling sha2 v0.10.9
   Compiling regex-automata v0.4.9
   Compiling regex-automata v0.1.10
   Compiling num_cpus v1.17.0
   Compiling chrono v0.4.41
   Compiling matchers v0.1.0
   Compiling home v0.5.11
   Compiling indent_write v2.2.0
   Compiling hex v0.4.3
   Compiling fmtools v0.1.2
   Compiling regex v1.11.1
   Compiling synstructure v0.13.2
   Compiling zerofrom-derive v0.1.6
   Compiling serde_derive v1.0.219
   Compiling yoke-derive v0.8.0
   Compiling zerovec-derive v0.11.1
   Compiling displaydoc v0.2.5
   Compiling thiserror-impl v1.0.69
   Compiling thiserror-impl v2.0.12
   Compiling tracing-attributes v0.1.30
   Compiling clap_derive v4.5.40
   Compiling zerofrom v0.1.6
   Compiling tracing v0.1.41
   Compiling yoke v0.8.0
   Compiling tracing-subscriber v0.3.19
   Compiling zerovec v0.11.2
   Compiling zerotrie v0.2.2
   Compiling clap v4.5.40
   Compiling tinystr v0.8.1
   Compiling potential_utf v0.1.2
   Compiling icu_collections v2.0.0
   Compiling icu_locale_core v2.0.0
   Compiling icu_provider v2.0.0
   Compiling icu_properties v2.0.1
   Compiling icu_normalizer v2.0.0
   Compiling idna_adapter v1.2.1
   Compiling idna v1.0.3
   Compiling url v2.5.4
   Compiling toml_datetime v0.6.11
   Compiling serde_spanned v0.6.9
   Compiling erased-serde v0.4.6
   Compiling serde-value v0.7.0
   Compiling cargo-platform v0.2.0
   Compiling toml_edit v0.22.27
   Compiling minijinja v2.10.2
   Compiling serde-untagged v0.1.7
   Compiling toml v0.8.23
   Compiling cargo-util-schemas v0.2.0
   Compiling cargo_metadata v0.20.0
   Compiling xtask v0.0.0 (/home/runner/work/scuffle/scuffle/dev-tools/xtask)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.77s
     Running `target/xtask/debug/xtask release check --exit-status --pr-number 441`
2025-06-22T16:19:50.274779Z  INFO crates_io_versions{package=openapiv3_1}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/op/en/openapiv3_1
2025-06-22T16:19:50.274781Z  INFO crates_io_versions{package=nutype-enum}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/nu/ty/nutype-enum
2025-06-22T16:19:50.274799Z  INFO crates_io_versions{package=scuffle-av1}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-av1
2025-06-22T16:19:50.274813Z  INFO crates_io_versions{package=postcompile}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/po/st/postcompile
2025-06-22T16:19:50.274797Z  INFO crates_io_versions{package=scuffle-aac}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-aac
2025-06-22T16:19:50.274843Z  INFO crates_io_versions{package=scuffle-batching}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-batching
2025-06-22T16:19:50.274861Z  INFO crates_io_versions{package=scuffle-amf0}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-amf0
2025-06-22T16:19:50.274870Z  INFO crates_io_versions{package=scuffle-bootstrap}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-bootstrap
2025-06-22T16:19:50.512451Z  INFO crates_io_versions{package=scuffle-changelog}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-changelog
2025-06-22T16:19:50.790930Z  INFO crates_io_versions{package=scuffle-flv}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-flv
2025-06-22T16:19:50.792062Z  INFO crates_io_versions{package=scuffle-bootstrap-derive}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-bootstrap-derive
2025-06-22T16:19:50.797790Z  INFO crates_io_versions{package=scuffle-bootstrap-telemetry}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-bootstrap-telemetry
2025-06-22T16:19:50.806874Z  INFO crates_io_versions{package=scuffle-transmuxer}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-transmuxer
2025-06-22T16:19:50.815215Z  INFO crates_io_versions{package=scuffle-h265}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-h265
2025-06-22T16:19:50.819128Z  INFO crates_io_versions{package=scuffle-expgolomb}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-expgolomb
2025-06-22T16:19:50.826312Z  INFO crates_io_versions{package=scuffle-signal}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-signal
2025-06-22T16:19:51.013470Z  INFO crates_io_versions{package=scuffle-pprof}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-pprof
2025-06-22T16:19:51.022058Z  INFO crates_io_versions{package=tinc-cel}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/ti/nc/tinc-cel
2025-06-22T16:19:51.046129Z  INFO crates_io_versions{package=scuffle-rtmp}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-rtmp
2025-06-22T16:19:51.314568Z  INFO crates_io_versions{package=scuffle-metrics-derive}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-metrics-derive
2025-06-22T16:19:51.319507Z  INFO crates_io_versions{package=scuffle-mp4}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-mp4
2025-06-22T16:19:51.324519Z  INFO crates_io_versions{package=scuffle-settings}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-settings
2025-06-22T16:19:51.333658Z  INFO crates_io_versions{package=tinc}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/ti/nc/tinc
2025-06-22T16:19:51.343250Z  INFO crates_io_versions{package=tinc-pb-prost}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/ti/nc/tinc-pb-prost
2025-06-22T16:19:51.532797Z  INFO crates_io_versions{package=scuffle-bytes-util}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-bytes-util
2025-06-22T16:19:51.550472Z  INFO crates_io_versions{package=scuffle-ffmpeg}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-ffmpeg
2025-06-22T16:19:51.558064Z  INFO crates_io_versions{package=scuffle-future-ext}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-future-ext
2025-06-22T16:19:51.834722Z  INFO crates_io_versions{package=scuffle-http}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-http
2025-06-22T16:19:51.837974Z  INFO crates_io_versions{package=scuffle-h264}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-h264
2025-06-22T16:19:51.843918Z  INFO crates_io_versions{package=tinc-build}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/ti/nc/tinc-build
2025-06-22T16:19:51.856373Z  INFO crates_io_versions{package=tinc-derive}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/ti/nc/tinc-derive
2025-06-22T16:19:51.880570Z  INFO crates_io_versions{package=scuffle-metrics}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-metrics
2025-06-22T16:19:52.064861Z  INFO crates_io_versions{package=scuffle-context}: xtask::cmd::release::utils: checking on crates.io url=https://index.crates.io/sc/uf/scuffle-context
2025-06-22T16:19:52.585209Z  INFO check{package=scuffle-amf0}:download_crate{name=scuffle-amf0 version=0.2.4}: xtask::cmd::release::utils: fetching from crates.io url=https://static.crates.io/crates/scuffle-amf0/scuffle-amf0-0.2.4.crate
2025-06-22T16:19:52.589520Z  INFO check{package=scuffle-bytes-util}:download_crate{name=scuffle-bytes-util version=0.1.4}: xtask::cmd::release::utils: fetching from crates.io url=https://static.crates.io/crates/scuffle-bytes-util/scuffle-bytes-util-0.1.4.crate
2025-06-22T16:19:52.633349Z  INFO xtask::cmd::release::check: running cargo-semver-checks
2025-06-22T16:19:59.079892Z  INFO xtask::cmd::release::check: running min versions check
2025-06-22T16:20:08.664111Z  INFO xtask::cmd::release::check: complete

@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch from 9db97e6 to 2debfe2 Compare May 30, 2025 23:09
@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch 2 times, most recently from a04e9b0 to 872c169 Compare May 31, 2025 01:06
serde::forward_to_deserialize_any! {
bool f64 char str string unit
seq map newtype_struct tuple
struct enum ignored_any identifier
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps in a future ticket we should take into account the struct field ordering, see samscott89/serde_qs#128 as an example of how to do that.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a ticket for it for now, I might tackle it in the future: CLOUD-123

@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch 3 times, most recently from 45d8dcb to 52ccb99 Compare June 2, 2025 23:42
@philipch07 philipch07 marked this pull request as ready for review June 2, 2025 23:52
@philipch07 philipch07 requested review from a team as code owners June 2, 2025 23:52
@philipch07 philipch07 requested a review from TroyKomodo June 2, 2025 23:53
Comment on lines 590 to 599
// same as before about the string stuff
// let bytes = [Amf0Marker::String as u8];
// let err = from_buf::<()>(Bytes::from_owner(bytes)).unwrap_err();
// assert!(matches!(
// err,
// Amf0Error::UnexpectedType {
// expected: [Amf0Marker::Null, Amf0Marker::Undefined],
// got: Amf0Marker::String
// }
// ));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this test commented out?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was a leftover from when I was confused about how to handle the errors from attempting to deserialize the String. I think we can delete it though since it's just checking the error output.

@philipch07 philipch07 requested a review from TroyKomodo June 3, 2025 02:24
@@ -202,8 +200,12 @@ where
where
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

forward to any

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing this causes the optional() test to fail. My current understanding is that forwarding to any doesn't handle the null properly so it keeps looping over and over causing a stack overflow.

@TroyKomodo
Copy link
Member

@philipch07 i pushed a commit showing sort of what i was looking for. What is currently outstanding on this PR is testing forward / backward ser-de impls.

Meaning that everytime we serialize should be able to be deserialized back.

So the goal is to now:

test serde-back-and-forth for all types

Sort of like this flow

let rust_type = something;
let amf0_bytes = rust_type.encode();
let rust_type2 = amf0_bytes.decode();
assert_eq(rust_type, rust_type2);

let amf0_value= amf0_bytes.decode();
let rust_type3 = amf0_value.decode();
assert_eq(rust_type, rust_type3);

@TroyKomodo TroyKomodo force-pushed the pch07/add-amf0-value-deserializer branch from feb05eb to 3c284b8 Compare June 9, 2025 13:20
@philipch07 philipch07 force-pushed the pch07/add-amf0-value-deserializer branch from 3c284b8 to 8c429d9 Compare June 22, 2025 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants