[INFO] fetching crate ublox_derive 0.1.0...
[INFO] testing ublox_derive-0.1.0 against beta-2024-12-08 for beta-1.84.0-4-retry
[INFO] extracting crate ublox_derive 0.1.0 into /workspace/builds/worker-4-tc2/source
[INFO] validating manifest of crates.io crate ublox_derive 0.1.0 on toolchain beta-2024-12-08
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2024-12-08" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate ublox_derive 0.1.0
[INFO] finished tweaking crates.io crate ublox_derive 0.1.0
[INFO] tweaked toml for crates.io crate ublox_derive 0.1.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2024-12-08" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 24 packages to latest compatible versions
[INFO] [stderr]       Adding syn v1.0.109 (available: v2.0.90)
[INFO] [stderr]       Adding which v4.4.2 (available: v7.0.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2024-12-08" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2024-12-08" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f19d52ac7f92a054ff65afb293feb09264d0fe04ee0254d842a4a2033cfa444e
[INFO] running `Command { std: "docker" "start" "-a" "f19d52ac7f92a054ff65afb293feb09264d0fe04ee0254d842a4a2033cfa444e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f19d52ac7f92a054ff65afb293feb09264d0fe04ee0254d842a4a2033cfa444e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f19d52ac7f92a054ff65afb293feb09264d0fe04ee0254d842a4a2033cfa444e", kill_on_drop: false }`
[INFO] [stdout] f19d52ac7f92a054ff65afb293feb09264d0fe04ee0254d842a4a2033cfa444e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2024-12-08" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4aebc613d4fa447bc7195869cfdf93ee2deac0ad3e64ab1bc963f75ba4bced3e
[INFO] running `Command { std: "docker" "start" "-a" "4aebc613d4fa447bc7195869cfdf93ee2deac0ad3e64ab1bc963f75ba4bced3e", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling ublox_derive v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.27s
[INFO] running `Command { std: "docker" "inspect" "4aebc613d4fa447bc7195869cfdf93ee2deac0ad3e64ab1bc963f75ba4bced3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4aebc613d4fa447bc7195869cfdf93ee2deac0ad3e64ab1bc963f75ba4bced3e", kill_on_drop: false }`
[INFO] [stdout] 4aebc613d4fa447bc7195869cfdf93ee2deac0ad3e64ab1bc963f75ba4bced3e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2024-12-08" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8aec37312cf04e5e00a793dd7535f02a453a627f597756c0b7eabd602313a899
[INFO] running `Command { std: "docker" "start" "-a" "8aec37312cf04e5e00a793dd7535f02a453a627f597756c0b7eabd602313a899", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling rustix v0.38.42
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling home v0.5.9
[INFO] [stderr]    Compiling either v1.13.0
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]    Compiling ublox_derive v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider removing this field
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 13.14s
[INFO] running `Command { std: "docker" "inspect" "8aec37312cf04e5e00a793dd7535f02a453a627f597756c0b7eabd602313a899", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8aec37312cf04e5e00a793dd7535f02a453a627f597756c0b7eabd602313a899", kill_on_drop: false }`
[INFO] [stdout] 8aec37312cf04e5e00a793dd7535f02a453a627f597756c0b7eabd602313a899
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2024-12-08" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1d85dc440c0b35aff5725be3b617d4b25407f87154523d105f8dada700c2dca2
[INFO] running `Command { std: "docker" "start" "-a" "1d85dc440c0b35aff5725be3b617d4b25407f87154523d105f8dada700c2dca2", kill_on_drop: false }`
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]    --> src/input.rs:549:16
[INFO] [stderr]     |
[INFO] [stderr] 549 | struct Comment(String);
[INFO] [stderr]     |        ------- ^^^^^^
[INFO] [stderr]     |        |
[INFO] [stderr]     |        field in this struct
[INFO] [stderr]     |
[INFO] [stderr]     = help: consider removing this field
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `ublox_derive` (lib) generated 1 warning
[INFO] [stderr] warning: `ublox_derive` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ublox_derive-780a35af17daf480)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::test_ubx_packet_recv_simple ... FAILED
[INFO] [stdout] test tests::test_ubx_packet_send ... FAILED
[INFO] [stdout] test tests::test_ubx_packet_recv_dyn_len ... FAILED
[INFO] [stdout] test tests::test_extend_bitflags ... ok
[INFO] [stdout] test tests::test_define_recv_packets ... FAILED
[INFO] [stdout] test tests::test_upgrade_enum ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_ubx_packet_recv_simple stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] first mismatch:
[INFO] [stdout] e # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize] ,] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) , }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] g # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize]] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] thread 'tests::test_ubx_packet_recv_simple' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize] ,] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) , }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize]] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::libunwind::trace::h8810477743020387
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::trace_unsynchronized::h3aa55355dd6c54a6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x75e2fd76a5aa - std::sys::backtrace::_print_fmt::h8588b0f62410823f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x75e2fd76a5aa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h98c26ac25ffe89bb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x75e2fd7bb173 - core::fmt::rt::Argument::fmt::hf95377f4aebd453b
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x75e2fd7bb173 - core::fmt::write::h0dd5f6e2238c7982
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/mod.rs:1189:21
[INFO] [stdout]    6:     0x75e2fd75deb3 - std::io::Write::write_fmt::h03bb0ca26e6faf8c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/io/mod.rs:1884:15
[INFO] [stdout]    7:     0x75e2fd76a3f2 - std::sys::backtrace::BacktraceLock::print::h5c19c1c038ee186d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x75e2fd76ca1d - std::panicking::default_hook::{{closure}}::h77172f079a1fcb13
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:268:22
[INFO] [stdout]    9:     0x75e2fd76c827 - std::panicking::default_hook::he5f8e3b203ccddba
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:292:9
[INFO] [stdout]   10:     0x59feae1a0997 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h7a3c7b4a1ae77f2f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   11:     0x59feae1a0997 - test::test_main::{{closure}}::hf0d3b69ae9b353d1
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:134:21
[INFO] [stdout]   12:     0x75e2fd76d198 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6332e82e7b189abd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   13:     0x75e2fd76d198 - std::panicking::rust_panic_with_hook::h53863d4e9018df39
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:809:13
[INFO] [stdout]   14:     0x75e2fd76cf5a - std::panicking::begin_panic_handler::{{closure}}::h67280e6fa0757873
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:674:13
[INFO] [stdout]   15:     0x75e2fd76aa89 - std::sys::backtrace::__rust_end_short_backtrace::h1dac3f54d6fbbeb2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:170:18
[INFO] [stdout]   16:     0x75e2fd76cbec - rust_begin_unwind
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:665:5
[INFO] [stdout]   17:     0x75e2fd7b7580 - core::panicking::panic_fmt::h6792bd1b2bf01041
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panicking.rs:76:14
[INFO] [stdout]   18:     0x59feae0d69b9 - ublox_derive::tests::run_compare_test::hd8893f4f8e893156
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   19:     0x59feae0e38d0 - ublox_derive::tests::test_ubx_packet_recv_simple::hb613fb1fe5d05ee6
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:37:5
[INFO] [stdout]   20:     0x59feae0d9267 - ublox_derive::tests::test_ubx_packet_recv_simple::{{closure}}::h7e80714bd79e44d9
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:12:33
[INFO] [stdout]   21:     0x59feae161d86 - core::ops::function::FnOnce::call_once::h21550c26b4ab2575
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x59feae1a54bb - core::ops::function::FnOnce::call_once::h871bf86719ec9aa4
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x59feae1a54bb - test::__rust_begin_short_backtrace::h2167df1e2b7d76fd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:632:18
[INFO] [stdout]   24:     0x59feae1a4ea8 - test::run_test_in_process::{{closure}}::h15d92f75a3adfb79
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:60
[INFO] [stdout]   25:     0x59feae1a4ea8 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb6c8955835a8dbbb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   26:     0x59feae1a4ea8 - std::panicking::try::do_call::hc79d0fc888a0bd30
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   27:     0x59feae1a4ea8 - std::panicking::try::hb8a7878e3a8589d6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   28:     0x59feae1a4ea8 - std::panic::catch_unwind::hb8e4600ff0ff5cfa
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   29:     0x59feae1a4ea8 - test::run_test_in_process::hc2900b0b18688dd6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:27
[INFO] [stdout]   30:     0x59feae1a4ea8 - test::run_test::{{closure}}::hac2a9cb07be3d48d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:576:43
[INFO] [stdout]   31:     0x59feae16894a - test::run_test::{{closure}}::h4a5b729e66a38cd8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:606:41
[INFO] [stdout]   32:     0x59feae16894a - std::sys::backtrace::__rust_begin_short_backtrace::h0496fb742492f573
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:154:18
[INFO] [stdout]   33:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbb6d257c550a54bd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:561:17
[INFO] [stdout]   34:     0x59feae16c2c4 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h46696fe4a6832328
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   35:     0x59feae16c2c4 - std::panicking::try::do_call::h2625a51b667bfb64
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   36:     0x59feae16c2c4 - std::panicking::try::hb956a59a1973aa4c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   37:     0x59feae16c2c4 - std::panic::catch_unwind::h64f3b9d1067ef6a0
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   38:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::h42b2841295b6c0b2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:559:30
[INFO] [stdout]   39:     0x59feae16c2c4 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6127de71b8124639
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h42f0ba71002a1b2c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   41:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had9e47d7a3dcecb8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   42:     0x75e2fd776e8b - std::sys::pal::unix::thread::Thread::new::thread_start::h48cf765408f6f5f2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/pal/unix/thread.rs:105:17
[INFO] [stdout]   43:     0x75e2fd3e8ac3 - <unknown>
[INFO] [stdout]   44:     0x75e2fd479a04 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_ubx_packet_send stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] first mismatch:
[INFO] [stdout] e # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 , } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1] ,] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] g # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1]] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] thread 'tests::test_ubx_packet_send' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 , } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1] ,] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1]] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::libunwind::trace::h8810477743020387
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::trace_unsynchronized::h3aa55355dd6c54a6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x75e2fd76a5aa - std::sys::backtrace::_print_fmt::h8588b0f62410823f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x75e2fd76a5aa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h98c26ac25ffe89bb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x75e2fd7bb173 - core::fmt::rt::Argument::fmt::hf95377f4aebd453b
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x75e2fd7bb173 - core::fmt::write::h0dd5f6e2238c7982
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/mod.rs:1189:21
[INFO] [stdout]    6:     0x75e2fd75deb3 - std::io::Write::write_fmt::h03bb0ca26e6faf8c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/io/mod.rs:1884:15
[INFO] [stdout]    7:     0x75e2fd76a3f2 - std::sys::backtrace::BacktraceLock::print::h5c19c1c038ee186d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x75e2fd76ca1d - std::panicking::default_hook::{{closure}}::h77172f079a1fcb13
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:268:22
[INFO] [stdout]    9:     0x75e2fd76c827 - std::panicking::default_hook::he5f8e3b203ccddba
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:292:9
[INFO] [stdout]   10:     0x59feae1a0997 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h7a3c7b4a1ae77f2f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   11:     0x59feae1a0997 - test::test_main::{{closure}}::hf0d3b69ae9b353d1
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:134:21
[INFO] [stdout]   12:     0x75e2fd76d198 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6332e82e7b189abd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   13:     0x75e2fd76d198 - std::panicking::rust_panic_with_hook::h53863d4e9018df39
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:809:13
[INFO] [stdout]   14:     0x75e2fd76cf5a - std::panicking::begin_panic_handler::{{closure}}::h67280e6fa0757873
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:674:13
[INFO] [stdout]   15:     0x75e2fd76aa89 - std::sys::backtrace::__rust_end_short_backtrace::h1dac3f54d6fbbeb2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:170:18
[INFO] [stdout]   16:     0x75e2fd76cbec - rust_begin_unwind
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:665:5
[INFO] [stdout]   17:     0x75e2fd7b7580 - core::panicking::panic_fmt::h6792bd1b2bf01041
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panicking.rs:76:14
[INFO] [stdout]   18:     0x59feae0d69b9 - ublox_derive::tests::run_compare_test::hd8893f4f8e893156
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   19:     0x59feae0f028d - ublox_derive::tests::test_ubx_packet_send::hb7dcfc49da24b9ba
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:343:5
[INFO] [stdout]   20:     0x59feae0e9667 - ublox_derive::tests::test_ubx_packet_send::{{closure}}::h3015cb45eb1cf97c
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:322:26
[INFO] [stdout]   21:     0x59feae162206 - core::ops::function::FnOnce::call_once::hc2bfa21d0bb13828
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x59feae1a54bb - core::ops::function::FnOnce::call_once::h871bf86719ec9aa4
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x59feae1a54bb - test::__rust_begin_short_backtrace::h2167df1e2b7d76fd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:632:18
[INFO] [stdout]   24:     0x59feae1a4ea8 - test::run_test_in_process::{{closure}}::h15d92f75a3adfb79
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:60
[INFO] [stdout]   25:     0x59feae1a4ea8 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb6c8955835a8dbbb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   26:     0x59feae1a4ea8 - std::panicking::try::do_call::hc79d0fc888a0bd30
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   27:     0x59feae1a4ea8 - std::panicking::try::hb8a7878e3a8589d6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   28:     0x59feae1a4ea8 - std::panic::catch_unwind::hb8e4600ff0ff5cfa
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   29:     0x59feae1a4ea8 - test::run_test_in_process::hc2900b0b18688dd6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:27
[INFO] [stdout]   30:     0x59feae1a4ea8 - test::run_test::{{closure}}::hac2a9cb07be3d48d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:576:43
[INFO] [stdout]   31:     0x59feae16894a - test::run_test::{{closure}}::h4a5b729e66a38cd8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:606:41
[INFO] [stdout]   32:     0x59feae16894a - std::sys::backtrace::__rust_begin_short_backtrace::h0496fb742492f573
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:154:18
[INFO] [stdout]   33:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbb6d257c550a54bd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:561:17
[INFO] [stdout]   34:     0x59feae16c2c4 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h46696fe4a6832328
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   35:     0x59feae16c2c4 - std::panicking::try::do_call::h2625a51b667bfb64
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   36:     0x59feae16c2c4 - std::panicking::try::hb956a59a1973aa4c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   37:     0x59feae16c2c4 - std::panic::catch_unwind::h64f3b9d1067ef6a0
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   38:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::h42b2841295b6c0b2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:559:30
[INFO] [stdout]   39:     0x59feae16c2c4 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6127de71b8124639
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h42f0ba71002a1b2c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   41:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had9e47d7a3dcecb8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   42:     0x75e2fd776e8b - std::sys::pal::unix::thread::Thread::new::thread_start::h48cf765408f6f5f2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/pal/unix/thread.rs:105:17
[INFO] [stdout]   43:     0x75e2fd3e8ac3 - <unknown>
[INFO] [stdout]   44:     0x75e2fd479a04 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_ubx_packet_recv_dyn_len stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] first mismatch:
[INFO] [stdout] e # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ()) ,) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] g # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ())) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] thread 'tests::test_ubx_packet_recv_dyn_len' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ()) ,) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ())) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::libunwind::trace::h8810477743020387
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::trace_unsynchronized::h3aa55355dd6c54a6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x75e2fd76a5aa - std::sys::backtrace::_print_fmt::h8588b0f62410823f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x75e2fd76a5aa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h98c26ac25ffe89bb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x75e2fd7bb173 - core::fmt::rt::Argument::fmt::hf95377f4aebd453b
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x75e2fd7bb173 - core::fmt::write::h0dd5f6e2238c7982
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/mod.rs:1189:21
[INFO] [stdout]    6:     0x75e2fd75deb3 - std::io::Write::write_fmt::h03bb0ca26e6faf8c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/io/mod.rs:1884:15
[INFO] [stdout]    7:     0x75e2fd76a3f2 - std::sys::backtrace::BacktraceLock::print::h5c19c1c038ee186d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x75e2fd76ca1d - std::panicking::default_hook::{{closure}}::h77172f079a1fcb13
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:268:22
[INFO] [stdout]    9:     0x75e2fd76c827 - std::panicking::default_hook::he5f8e3b203ccddba
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:292:9
[INFO] [stdout]   10:     0x59feae1a0997 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h7a3c7b4a1ae77f2f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   11:     0x59feae1a0997 - test::test_main::{{closure}}::hf0d3b69ae9b353d1
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:134:21
[INFO] [stdout]   12:     0x75e2fd76d198 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6332e82e7b189abd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   13:     0x75e2fd76d198 - std::panicking::rust_panic_with_hook::h53863d4e9018df39
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:809:13
[INFO] [stdout]   14:     0x75e2fd76cf5a - std::panicking::begin_panic_handler::{{closure}}::h67280e6fa0757873
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:674:13
[INFO] [stdout]   15:     0x75e2fd76aa89 - std::sys::backtrace::__rust_end_short_backtrace::h1dac3f54d6fbbeb2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:170:18
[INFO] [stdout]   16:     0x75e2fd76cbec - rust_begin_unwind
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:665:5
[INFO] [stdout]   17:     0x75e2fd7b7580 - core::panicking::panic_fmt::h6792bd1b2bf01041
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panicking.rs:76:14
[INFO] [stdout]   18:     0x59feae0d69b9 - ublox_derive::tests::run_compare_test::hd8893f4f8e893156
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   19:     0x59feae0e948c - ublox_derive::tests::test_ubx_packet_recv_dyn_len::h47ffd80ddd024ec2
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:225:5
[INFO] [stdout]   20:     0x59feae0e3ab7 - ublox_derive::tests::test_ubx_packet_recv_dyn_len::{{closure}}::h872abac0196c7e97
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:205:34
[INFO] [stdout]   21:     0x59feae161dc6 - core::ops::function::FnOnce::call_once::h26e69d6cb363ae9d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x59feae1a54bb - core::ops::function::FnOnce::call_once::h871bf86719ec9aa4
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x59feae1a54bb - test::__rust_begin_short_backtrace::h2167df1e2b7d76fd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:632:18
[INFO] [stdout]   24:     0x59feae1a4ea8 - test::run_test_in_process::{{closure}}::h15d92f75a3adfb79
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:60
[INFO] [stdout]   25:     0x59feae1a4ea8 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb6c8955835a8dbbb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   26:     0x59feae1a4ea8 - std::panicking::try::do_call::hc79d0fc888a0bd30
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   27:     0x59feae1a4ea8 - std::panicking::try::hb8a7878e3a8589d6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   28:     0x59feae1a4ea8 - std::panic::catch_unwind::hb8e4600ff0ff5cfa
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   29:     0x59feae1a4ea8 - test::run_test_in_process::hc2900b0b18688dd6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:27
[INFO] [stdout]   30:     0x59feae1a4ea8 - test::run_test::{{closure}}::hac2a9cb07be3d48d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:576:43
[INFO] [stdout]   31:     0x59feae16894a - test::run_test::{{closure}}::h4a5b729e66a38cd8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:606:41
[INFO] [stdout]   32:     0x59feae16894a - std::sys::backtrace::__rust_begin_short_backtrace::h0496fb742492f573
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:154:18
[INFO] [stdout]   33:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbb6d257c550a54bd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:561:17
[INFO] [stdout]   34:     0x59feae16c2c4 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h46696fe4a6832328
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   35:     0x59feae16c2c4 - std::panicking::try::do_call::h2625a51b667bfb64
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   36:     0x59feae16c2c4 - std::panicking::try::hb956a59a1973aa4c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   37:     0x59feae16c2c4 - std::panic::catch_unwind::h64f3b9d1067ef6a0
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   38:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::h42b2841295b6c0b2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:559:30
[INFO] [stdout]   39:     0x59feae16c2c4 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6127de71b8124639
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h42f0ba71002a1b2c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   41:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had9e47d7a3dcecb8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   42:     0x75e2fd776e8b - std::sys::pal::unix::thread::Thread::new::thread_start::h48cf765408f6f5f2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/pal/unix/thread.rs:105:17
[INFO] [stdout]   43:     0x75e2fd3e8ac3 - <unknown>
[INFO] [stdout]   44:     0x75e2fd479a04 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_define_recv_packets stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the toolchain 'beta-2024-12-08-x86_64-unknown-linux-gnu'.
[INFO] [stdout] To install, run `rustup component add --toolchain beta-2024-12-08-x86_64-unknown-linux-gnu rustfmt`
[INFO] [stdout] 
[INFO] [stdout] first mismatch:
[INFO] [stdout] e # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16) ,) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] g # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16)) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] thread 'tests::test_define_recv_packets' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16) ,) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16)) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::libunwind::trace::h8810477743020387
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
[INFO] [stdout]    1:     0x75e2fd76a5aa - std::backtrace_rs::backtrace::trace_unsynchronized::h3aa55355dd6c54a6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x75e2fd76a5aa - std::sys::backtrace::_print_fmt::h8588b0f62410823f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x75e2fd76a5aa - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h98c26ac25ffe89bb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x75e2fd7bb173 - core::fmt::rt::Argument::fmt::hf95377f4aebd453b
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/rt.rs:177:76
[INFO] [stdout]    5:     0x75e2fd7bb173 - core::fmt::write::h0dd5f6e2238c7982
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/fmt/mod.rs:1189:21
[INFO] [stdout]    6:     0x75e2fd75deb3 - std::io::Write::write_fmt::h03bb0ca26e6faf8c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/io/mod.rs:1884:15
[INFO] [stdout]    7:     0x75e2fd76a3f2 - std::sys::backtrace::BacktraceLock::print::h5c19c1c038ee186d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    8:     0x75e2fd76ca1d - std::panicking::default_hook::{{closure}}::h77172f079a1fcb13
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:268:22
[INFO] [stdout]    9:     0x75e2fd76c827 - std::panicking::default_hook::he5f8e3b203ccddba
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:292:9
[INFO] [stdout]   10:     0x59feae1a0997 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h7a3c7b4a1ae77f2f
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   11:     0x59feae1a0997 - test::test_main::{{closure}}::hf0d3b69ae9b353d1
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:134:21
[INFO] [stdout]   12:     0x75e2fd76d198 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6332e82e7b189abd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1986:9
[INFO] [stdout]   13:     0x75e2fd76d198 - std::panicking::rust_panic_with_hook::h53863d4e9018df39
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:809:13
[INFO] [stdout]   14:     0x75e2fd76cf5a - std::panicking::begin_panic_handler::{{closure}}::h67280e6fa0757873
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:674:13
[INFO] [stdout]   15:     0x75e2fd76aa89 - std::sys::backtrace::__rust_end_short_backtrace::h1dac3f54d6fbbeb2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:170:18
[INFO] [stdout]   16:     0x75e2fd76cbec - rust_begin_unwind
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:665:5
[INFO] [stdout]   17:     0x75e2fd7b7580 - core::panicking::panic_fmt::h6792bd1b2bf01041
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panicking.rs:76:14
[INFO] [stdout]   18:     0x59feae0d69b9 - ublox_derive::tests::run_compare_test::hd8893f4f8e893156
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   19:     0x59feae0f8a54 - ublox_derive::tests::test_define_recv_packets::h98c2f182f4b5f4b0
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:529:5
[INFO] [stdout]   20:     0x59feae0f30b7 - ublox_derive::tests::test_define_recv_packets::{{closure}}::h8b18867eb612ff99
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:516:30
[INFO] [stdout]   21:     0x59feae1621c6 - core::ops::function::FnOnce::call_once::hbdcc69f848450501
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x59feae1a54bb - core::ops::function::FnOnce::call_once::h871bf86719ec9aa4
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x59feae1a54bb - test::__rust_begin_short_backtrace::h2167df1e2b7d76fd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:632:18
[INFO] [stdout]   24:     0x59feae1a4ea8 - test::run_test_in_process::{{closure}}::h15d92f75a3adfb79
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:60
[INFO] [stdout]   25:     0x59feae1a4ea8 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hb6c8955835a8dbbb
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   26:     0x59feae1a4ea8 - std::panicking::try::do_call::hc79d0fc888a0bd30
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   27:     0x59feae1a4ea8 - std::panicking::try::hb8a7878e3a8589d6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   28:     0x59feae1a4ea8 - std::panic::catch_unwind::hb8e4600ff0ff5cfa
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   29:     0x59feae1a4ea8 - test::run_test_in_process::hc2900b0b18688dd6
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:655:27
[INFO] [stdout]   30:     0x59feae1a4ea8 - test::run_test::{{closure}}::hac2a9cb07be3d48d
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:576:43
[INFO] [stdout]   31:     0x59feae16894a - test::run_test::{{closure}}::h4a5b729e66a38cd8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/test/src/lib.rs:606:41
[INFO] [stdout]   32:     0x59feae16894a - std::sys::backtrace::__rust_begin_short_backtrace::h0496fb742492f573
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/backtrace.rs:154:18
[INFO] [stdout]   33:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbb6d257c550a54bd
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:561:17
[INFO] [stdout]   34:     0x59feae16c2c4 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h46696fe4a6832328
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   35:     0x59feae16c2c4 - std::panicking::try::do_call::h2625a51b667bfb64
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:557:40
[INFO] [stdout]   36:     0x59feae16c2c4 - std::panicking::try::hb956a59a1973aa4c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panicking.rs:520:19
[INFO] [stdout]   37:     0x59feae16c2c4 - std::panic::catch_unwind::h64f3b9d1067ef6a0
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/panic.rs:358:14
[INFO] [stdout]   38:     0x59feae16c2c4 - std::thread::Builder::spawn_unchecked_::{{closure}}::h42b2841295b6c0b2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/thread/mod.rs:559:30
[INFO] [stdout]   39:     0x59feae16c2c4 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6127de71b8124639
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h42f0ba71002a1b2c
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   41:     0x75e2fd776e8b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::had9e47d7a3dcecb8
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/alloc/src/boxed.rs:1972:9
[INFO] [stdout]   42:     0x75e2fd776e8b - std::sys::pal::unix::thread::Thread::new::thread_start::h48cf765408f6f5f2
[INFO] [stdout]                                at /rustc/202008a1b8de96d2e5b6bc02d379db03a877d34d/library/std/src/sys/pal/unix/thread.rs:105:17
[INFO] [stdout]   43:     0x75e2fd3e8ac3 - <unknown>
[INFO] [stdout]   44:     0x75e2fd479a04 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_define_recv_packets
[INFO] [stdout]     tests::test_ubx_packet_recv_dyn_len
[INFO] [stdout]     tests::test_ubx_packet_recv_simple
[INFO] [stdout]     tests::test_ubx_packet_send
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.62s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "1d85dc440c0b35aff5725be3b617d4b25407f87154523d105f8dada700c2dca2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d85dc440c0b35aff5725be3b617d4b25407f87154523d105f8dada700c2dca2", kill_on_drop: false }`
[INFO] [stdout] 1d85dc440c0b35aff5725be3b617d4b25407f87154523d105f8dada700c2dca2
