[INFO] fetching crate ublox_derive 0.3.0... [INFO] testing ublox_derive-0.3.0 against try#2440211fe03bc45c89b6dc1a3df18382ce91e32b for pr-146098-1 [INFO] extracting crate ublox_derive 0.3.0 into /workspace/builds/worker-4-tc2/source [INFO] started tweaking crates.io crate ublox_derive 0.3.0 [INFO] finished tweaking crates.io crate ublox_derive 0.3.0 [INFO] tweaked toml for crates.io crate ublox_derive 0.3.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate ublox_derive 0.3.0 on toolchain 2440211fe03bc45c89b6dc1a3df18382ce91e32b [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate ublox_derive 0.3.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7f1b2007491f7aad9c68b0bb38b2904b269a8f99ae8976509a2a3d1f38b1f794 [INFO] running `Command { std: "docker" "start" "-a" "7f1b2007491f7aad9c68b0bb38b2904b269a8f99ae8976509a2a3d1f38b1f794", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7f1b2007491f7aad9c68b0bb38b2904b269a8f99ae8976509a2a3d1f38b1f794", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7f1b2007491f7aad9c68b0bb38b2904b269a8f99ae8976509a2a3d1f38b1f794", kill_on_drop: false }` [INFO] [stdout] 7f1b2007491f7aad9c68b0bb38b2904b269a8f99ae8976509a2a3d1f38b1f794 [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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 45945fccde985abbf6a7c3dac8b0a7341175b7666193a6a387949e763084215c [INFO] running `Command { std: "docker" "start" "-a" "45945fccde985abbf6a7c3dac8b0a7341175b7666193a6a387949e763084215c", kill_on_drop: false }` [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling ublox_derive v0.3.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.91s [INFO] running `Command { std: "docker" "inspect" "45945fccde985abbf6a7c3dac8b0a7341175b7666193a6a387949e763084215c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "45945fccde985abbf6a7c3dac8b0a7341175b7666193a6a387949e763084215c", kill_on_drop: false }` [INFO] [stdout] 45945fccde985abbf6a7c3dac8b0a7341175b7666193a6a387949e763084215c [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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c23da6c72bfe86579405832abe003c55f0cea092e0d0b6ac07eeffa44e7bac40 [INFO] running `Command { std: "docker" "start" "-a" "c23da6c72bfe86579405832abe003c55f0cea092e0d0b6ac07eeffa44e7bac40", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Compiling linux-raw-sys v0.9.4 [INFO] [stderr] Compiling bitflags v2.9.1 [INFO] [stderr] Compiling yansi v1.0.1 [INFO] [stderr] Compiling diff v0.1.13 [INFO] [stderr] Compiling env_home v0.1.0 [INFO] [stderr] Compiling pretty_assertions v1.4.1 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling which v8.0.0 [INFO] [stderr] Compiling ublox_derive v0.3.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 13.65s [INFO] running `Command { std: "docker" "inspect" "c23da6c72bfe86579405832abe003c55f0cea092e0d0b6ac07eeffa44e7bac40", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c23da6c72bfe86579405832abe003c55f0cea092e0d0b6ac07eeffa44e7bac40", kill_on_drop: false }` [INFO] [stdout] c23da6c72bfe86579405832abe003c55f0cea092e0d0b6ac07eeffa44e7bac40 [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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+2440211fe03bc45c89b6dc1a3df18382ce91e32b" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1653607b88ab7391e3115a049e6c00744770d6ccf46a2389c00777f8047d415e [INFO] running `Command { std: "docker" "start" "-a" "1653607b88ab7391e3115a049e6c00744770d6ccf46a2389c00777f8047d415e", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.11s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ublox_derive-02efd8f1c491522e) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test tests::test_extend_bitflags ... ok [INFO] [stdout] test tests::test_upgrade_enum ... ok [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_define_recv_packets ... FAILED [INFO] [stdout] test tests::test_ubx_packet_recv_simple ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [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 custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] warning=Internal rustfmt error [INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] first mismatch: [INFO] [stdout] expected: [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] thread 'tests::test_ubx_packet_send' (30) panicked at src/tests.rs:970:9: [INFO] [stdout] assertion failed: `(left == right)` [INFO] [stdout] [INFO] [stdout] Diff < left / right > : [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] ># [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] [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x78d8bd937682 - std::backtrace_rs::backtrace::libunwind::trace::h22a6a535a50603c6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x78d8bd937682 - std::backtrace_rs::backtrace::trace_unsynchronized::h2503a4f30dbfbaa2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x78d8bd937682 - std::sys::backtrace::_print_fmt::hec54e31f36456895 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x78d8bd937682 - ::fmt::hb1988e8b50fa5f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x78d8bd96870f - core::fmt::rt::Argument::fmt::h3118a66e1a57a586 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x78d8bd96870f - core::fmt::write::hcd056e06a609f600 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x78d8bd8e8521 - std::io::default_write_fmt::hdabc5d6505cb374b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x78d8bd8e8521 - std::io::Write::write_fmt::h18c82179fdc1f9d2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x78d8bd8fdb62 - std::sys::backtrace::BacktraceLock::print::h69f50ba7cfff8317 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x78d8bd905e5a - std::panicking::default_hook::{{closure}}::hfa978eb2255ab3ab [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x78d8bd905cec - std::panicking::default_hook::h09da2eaf8f1deadd [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x6178cf2c0b7e - as core::ops::function::Fn>::call::h1697e4d80f236ef6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 12: 0x6178cf2c0b7e - test::test_main_with_exit_callback::{{closure}}::h8f63929ca9fd483b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x78d8bd9065bf - as core::ops::function::Fn>::call::hba67e0dc3e3fc548 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 14: 0x78d8bd9065bf - std::panicking::panic_with_hook::h13c40d280d130fd3 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x78d8bd90636a - std::panicking::panic_handler::{{closure}}::hd79d22e8a1d3b951 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:707:13 [INFO] [stdout] 16: 0x78d8bd8fdca9 - std::sys::backtrace::__rust_end_short_backtrace::h83414d1ec69cf3a6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x78d8bd8d9cad - __rustc[b78aa6c7b08e5dc4]::rust_begin_unwind [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x78d8bd978730 - core::panicking::panic_fmt::h326b75cf8ee01b13 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panicking.rs:78:14 [INFO] [stdout] 19: 0x6178cf1d84bc - ublox_derive::tests::run_compare_test::hf935acb7582b1e42 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:970:9 [INFO] [stdout] 20: 0x6178cf1e4dc8 - ublox_derive::tests::test_ubx_packet_send::h158ee44ab582fea8 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:538:5 [INFO] [stdout] 21: 0x6178cf1e4e57 - ublox_derive::tests::test_ubx_packet_send::{{closure}}::h070ac995bc812a5a [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:517:26 [INFO] [stdout] 22: 0x6178cf248936 - core::ops::function::FnOnce::call_once::h9329b79cfb8cad4e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x6178cf2c095b - core::ops::function::FnOnce::call_once::he420dad47d9aac14 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x6178cf2c095b - test::__rust_begin_short_backtrace::h51976f55c263f7c2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x6178cf2d6585 - test::run_test_in_process::{{closure}}::h6aa4339396d33320 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x6178cf2d6585 - as core::ops::function::FnOnce<()>>::call_once::h5bd0ba3863a53529 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x6178cf2d6585 - std::panicking::catch_unwind::do_call::h5c710722c40c5839 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x6178cf2d6585 - std::panicking::catch_unwind::hf41b5be070ce0f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x6178cf2d6585 - std::panic::catch_unwind::h4559aa103e6f16d6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x6178cf2d6585 - test::run_test_in_process::he6fd763a772ff213 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x6178cf2d6585 - test::run_test::{{closure}}::he46f5435849feb5b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x6178cf2acd94 - test::run_test::{{closure}}::h12a66289c31b502a [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x6178cf2acd94 - std::sys::backtrace::__rust_begin_short_backtrace::h614a7925ed7b2f5e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbc654088c5dbff36 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x6178cf2b073a - as core::ops::function::FnOnce<()>>::call_once::h3f631d2ca531b61d [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x6178cf2b073a - std::panicking::catch_unwind::do_call::hd2548748db0aa717 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x6178cf2b073a - std::panicking::catch_unwind::hf7d8620d84df48e2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x6178cf2b073a - std::panic::catch_unwind::hdde75b8543fcb96b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::h991e7d03b432cf3f [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x6178cf2b073a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebddb40255441657 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 41: 0x78d8bd8f82ff - as core::ops::function::FnOnce>::call_once::h55e8930dc7db99a5 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1973:9 [INFO] [stdout] 42: 0x78d8bd8f82ff - std::sys::thread::unix::Thread::new::thread_start::he23d038ee4fa004e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/thread/unix.rs:126:17 [INFO] [stdout] 43: 0x78d8bd693aa4 - [INFO] [stdout] 44: 0x78d8bd720a34 - clone [INFO] [stdout] 45: 0x0 - [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 custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] warning=Internal rustfmt error [INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] first mismatch: [INFO] [stdout] expected: [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 ..] } pub (crate) 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 , }) } } } # [doc = ""] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 38usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 38usize ; # [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 ..] } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 38usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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) , & 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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 ..] } pub (crate) 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 }) } } } # [doc = ""] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 38usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 38usize ; # [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 ..] } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 38usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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) , & 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] thread 'tests::test_ubx_packet_recv_dyn_len' (28) panicked at src/tests.rs:970:9: [INFO] [stdout] assertion failed: `(left == right)` [INFO] [stdout] [INFO] [stdout] Diff < left / right > : [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 ..] } pub (crate) 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 , }) } } } # [doc = ""] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 38usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 38usize ; # [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 ..] } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 38usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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) , & 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] ># [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 ..] } pub (crate) 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 }) } } } # [doc = ""] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 38usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 38usize ; # [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 ..] } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 38usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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) , & 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] [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x78d8bd937682 - std::backtrace_rs::backtrace::libunwind::trace::h22a6a535a50603c6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x78d8bd937682 - std::backtrace_rs::backtrace::trace_unsynchronized::h2503a4f30dbfbaa2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x78d8bd937682 - std::sys::backtrace::_print_fmt::hec54e31f36456895 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x78d8bd937682 - ::fmt::hb1988e8b50fa5f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x78d8bd96870f - core::fmt::rt::Argument::fmt::h3118a66e1a57a586 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x78d8bd96870f - core::fmt::write::hcd056e06a609f600 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x78d8bd8e8521 - std::io::default_write_fmt::hdabc5d6505cb374b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x78d8bd8e8521 - std::io::Write::write_fmt::h18c82179fdc1f9d2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x78d8bd8fdb62 - std::sys::backtrace::BacktraceLock::print::h69f50ba7cfff8317 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x78d8bd905e5a - std::panicking::default_hook::{{closure}}::hfa978eb2255ab3ab [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x78d8bd905cec - std::panicking::default_hook::h09da2eaf8f1deadd [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x6178cf2c0b7e - as core::ops::function::Fn>::call::h1697e4d80f236ef6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 12: 0x6178cf2c0b7e - test::test_main_with_exit_callback::{{closure}}::h8f63929ca9fd483b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x78d8bd9065bf - as core::ops::function::Fn>::call::hba67e0dc3e3fc548 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 14: 0x78d8bd9065bf - std::panicking::panic_with_hook::h13c40d280d130fd3 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x78d8bd90636a - std::panicking::panic_handler::{{closure}}::hd79d22e8a1d3b951 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:707:13 [INFO] [stdout] 16: 0x78d8bd8fdca9 - std::sys::backtrace::__rust_end_short_backtrace::h83414d1ec69cf3a6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x78d8bd8d9cad - __rustc[b78aa6c7b08e5dc4]::rust_begin_unwind [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x78d8bd978730 - core::panicking::panic_fmt::h326b75cf8ee01b13 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panicking.rs:78:14 [INFO] [stdout] 19: 0x6178cf1d84bc - ublox_derive::tests::run_compare_test::hf935acb7582b1e42 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:970:9 [INFO] [stdout] 20: 0x6178cf209fe1 - ublox_derive::tests::test_ubx_packet_recv_dyn_len::hbc486430d5bb3d80 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:355:5 [INFO] [stdout] 21: 0x6178cf20a067 - ublox_derive::tests::test_ubx_packet_recv_dyn_len::{{closure}}::h0347b40acbf9726d [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:335:34 [INFO] [stdout] 22: 0x6178cf248726 - core::ops::function::FnOnce::call_once::h61f1eafa9e54648b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x6178cf2c095b - core::ops::function::FnOnce::call_once::he420dad47d9aac14 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x6178cf2c095b - test::__rust_begin_short_backtrace::h51976f55c263f7c2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x6178cf2d6585 - test::run_test_in_process::{{closure}}::h6aa4339396d33320 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x6178cf2d6585 - as core::ops::function::FnOnce<()>>::call_once::h5bd0ba3863a53529 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x6178cf2d6585 - std::panicking::catch_unwind::do_call::h5c710722c40c5839 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x6178cf2d6585 - std::panicking::catch_unwind::hf41b5be070ce0f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x6178cf2d6585 - std::panic::catch_unwind::h4559aa103e6f16d6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x6178cf2d6585 - test::run_test_in_process::he6fd763a772ff213 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x6178cf2d6585 - test::run_test::{{closure}}::he46f5435849feb5b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x6178cf2acd94 - test::run_test::{{closure}}::h12a66289c31b502a [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x6178cf2acd94 - std::sys::backtrace::__rust_begin_short_backtrace::h614a7925ed7b2f5e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbc654088c5dbff36 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x6178cf2b073a - as core::ops::function::FnOnce<()>>::call_once::h3f631d2ca531b61d [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x6178cf2b073a - std::panicking::catch_unwind::do_call::hd2548748db0aa717 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x6178cf2b073a - std::panicking::catch_unwind::hf7d8620d84df48e2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x6178cf2b073a - std::panic::catch_unwind::hdde75b8543fcb96b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::h991e7d03b432cf3f [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x6178cf2b073a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebddb40255441657 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 41: 0x78d8bd8f82ff - as core::ops::function::FnOnce>::call_once::h55e8930dc7db99a5 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1973:9 [INFO] [stdout] 42: 0x78d8bd8f82ff - std::sys::thread::unix::Thread::new::thread_start::he23d038ee4fa004e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/thread/unix.rs:126:17 [INFO] [stdout] 43: 0x78d8bd693aa4 - [INFO] [stdout] 44: 0x78d8bd720a34 - clone [INFO] [stdout] 45: 0x0 - [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 custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] warning=Internal rustfmt error [INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] first mismatch: [INFO] [stdout] expected: [INFO] [stdout] # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } # [doc = "All possible packets enum, owning the underlying data"] # [derive (Debug)] pub enum PacketOwned { Pack1 (Pack1Owned) , Pack2 (Pack2Owned) , Unknown (UnknownPacketOwned) , } 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 fn to_owned (& self) -> PacketOwned { self . into () } } impl PacketOwned { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketOwned :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketOwned :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketOwned :: 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 , })) , } } pub (crate) fn match_packet_owned (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketOwned , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack1Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack1 (Pack1Owned (bytes))) } , (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack2Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack2 (Pack2Owned (bytes))) } , _ => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; Ok (PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class , msg_id , })) } , } } impl < 'a > From < & PacketRef < 'a >> for PacketOwned { fn from (packet : & PacketRef < 'a >) -> Self { match packet { PacketRef :: Pack1 (packet) => PacketOwned :: Pack1 (packet . into ()) , PacketRef :: Pack2 (packet) => PacketOwned :: Pack2 (packet . into ()) , PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , }) => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class : * class , msg_id : * 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) => PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => 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 >) } # [doc = "All possible packets enum, owning the underlying data"] # [derive (Debug)] pub enum PacketOwned { Pack1 (Pack1Owned) , Pack2 (Pack2Owned) , Unknown (UnknownPacketOwned) } 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 fn to_owned (& self) -> PacketOwned { self . into () } } impl PacketOwned { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketOwned :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketOwned :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketOwned :: 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 })) , } } pub (crate) fn match_packet_owned (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketOwned , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack1Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack1 (Pack1Owned (bytes))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack2Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack2 (Pack2Owned (bytes))) } _ => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; Ok (PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class , msg_id })) } } } impl < 'a > From < & PacketRef < 'a >> for PacketOwned { fn from (packet : & PacketRef < 'a >) -> Self { match packet { PacketRef :: Pack1 (packet) => PacketOwned :: Pack1 (packet . into ()) , PacketRef :: Pack2 (packet) => PacketOwned :: Pack2 (packet . into ()) , PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id }) => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class : * class , msg_id : * 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) => PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } } [INFO] [stdout] [INFO] [stdout] thread 'tests::test_define_recv_packets' (26) panicked at src/tests.rs:970:9: [INFO] [stdout] assertion failed: `(left == right)` [INFO] [stdout] [INFO] [stdout] Diff < left / right > : [INFO] [stdout] <# [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } # [doc = "All possible packets enum, owning the underlying data"] # [derive (Debug)] pub enum PacketOwned { Pack1 (Pack1Owned) , Pack2 (Pack2Owned) , Unknown (UnknownPacketOwned) , } 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 fn to_owned (& self) -> PacketOwned { self . into () } } impl PacketOwned { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketOwned :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketOwned :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketOwned :: 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 , })) , } } pub (crate) fn match_packet_owned (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketOwned , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack1Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack1 (Pack1Owned (bytes))) } , (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack2Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack2 (Pack2Owned (bytes))) } , _ => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; Ok (PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class , msg_id , })) } , } } impl < 'a > From < & PacketRef < 'a >> for PacketOwned { fn from (packet : & PacketRef < 'a >) -> Self { match packet { PacketRef :: Pack1 (packet) => PacketOwned :: Pack1 (packet . into ()) , PacketRef :: Pack2 (packet) => PacketOwned :: Pack2 (packet . into ()) , PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , }) => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class : * class , msg_id : * 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) => PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } } [INFO] [stdout] ># [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) } # [doc = "All possible packets enum, owning the underlying data"] # [derive (Debug)] pub enum PacketOwned { Pack1 (Pack1Owned) , Pack2 (Pack2Owned) , Unknown (UnknownPacketOwned) } 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 fn to_owned (& self) -> PacketOwned { self . into () } } impl PacketOwned { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketOwned :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketOwned :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketOwned :: 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 })) , } } pub (crate) fn match_packet_owned (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketOwned , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack1Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack1 (Pack1Owned (bytes))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Owned > :: validate (payload) . is_ok () => { let mut bytes = [0u8 ; Pack2Owned :: PACKET_SIZE] ; bytes . clone_from_slice (payload) ; Ok (PacketOwned :: Pack2 (Pack2Owned (bytes))) } _ => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; Ok (PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class , msg_id })) } } } impl < 'a > From < & PacketRef < 'a >> for PacketOwned { fn from (packet : & PacketRef < 'a >) -> Self { match packet { PacketRef :: Pack1 (packet) => PacketOwned :: Pack1 (packet . into ()) , PacketRef :: Pack2 (packet) => PacketOwned :: Pack2 (packet . into ()) , PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id }) => { let mut payload_copy = [0u8 ; MAX_PAYLOAD_LEN as usize] ; let payload_len = core :: cmp :: min (payload . len () , MAX_PAYLOAD_LEN as usize) ; payload_copy [.. payload_len] . copy_from_slice (& payload [.. payload_len]) ; PacketOwned :: Unknown (UnknownPacketOwned { payload : payload_copy , payload_len , class : * class , msg_id : * 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) => PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } } [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x78d8bd937682 - std::backtrace_rs::backtrace::libunwind::trace::h22a6a535a50603c6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x78d8bd937682 - std::backtrace_rs::backtrace::trace_unsynchronized::h2503a4f30dbfbaa2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x78d8bd937682 - std::sys::backtrace::_print_fmt::hec54e31f36456895 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x78d8bd937682 - ::fmt::hb1988e8b50fa5f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x78d8bd96870f - core::fmt::rt::Argument::fmt::h3118a66e1a57a586 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x78d8bd96870f - core::fmt::write::hcd056e06a609f600 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x78d8bd8e8521 - std::io::default_write_fmt::hdabc5d6505cb374b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x78d8bd8e8521 - std::io::Write::write_fmt::h18c82179fdc1f9d2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x78d8bd8fdb62 - std::sys::backtrace::BacktraceLock::print::h69f50ba7cfff8317 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x78d8bd905e5a - std::panicking::default_hook::{{closure}}::hfa978eb2255ab3ab [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x78d8bd905cec - std::panicking::default_hook::h09da2eaf8f1deadd [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x6178cf2c0b7e - as core::ops::function::Fn>::call::h1697e4d80f236ef6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 12: 0x6178cf2c0b7e - test::test_main_with_exit_callback::{{closure}}::h8f63929ca9fd483b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x78d8bd9065bf - as core::ops::function::Fn>::call::hba67e0dc3e3fc548 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 14: 0x78d8bd9065bf - std::panicking::panic_with_hook::h13c40d280d130fd3 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x78d8bd90636a - std::panicking::panic_handler::{{closure}}::hd79d22e8a1d3b951 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:707:13 [INFO] [stdout] 16: 0x78d8bd8fdca9 - std::sys::backtrace::__rust_end_short_backtrace::h83414d1ec69cf3a6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x78d8bd8d9cad - __rustc[b78aa6c7b08e5dc4]::rust_begin_unwind [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x78d8bd978730 - core::panicking::panic_fmt::h326b75cf8ee01b13 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panicking.rs:78:14 [INFO] [stdout] 19: 0x6178cf1d84bc - ublox_derive::tests::run_compare_test::hf935acb7582b1e42 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:970:9 [INFO] [stdout] 20: 0x6178cf1eec14 - ublox_derive::tests::test_define_recv_packets::h3d8cbdd219fefc17 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:724:5 [INFO] [stdout] 21: 0x6178cf1eed07 - ublox_derive::tests::test_define_recv_packets::{{closure}}::h560b27e04026409e [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:711:30 [INFO] [stdout] 22: 0x6178cf248976 - core::ops::function::FnOnce::call_once::ha0905558bdf95451 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x6178cf2c095b - core::ops::function::FnOnce::call_once::he420dad47d9aac14 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x6178cf2c095b - test::__rust_begin_short_backtrace::h51976f55c263f7c2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x6178cf2d6585 - test::run_test_in_process::{{closure}}::h6aa4339396d33320 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x6178cf2d6585 - as core::ops::function::FnOnce<()>>::call_once::h5bd0ba3863a53529 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x6178cf2d6585 - std::panicking::catch_unwind::do_call::h5c710722c40c5839 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x6178cf2d6585 - std::panicking::catch_unwind::hf41b5be070ce0f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x6178cf2d6585 - std::panic::catch_unwind::h4559aa103e6f16d6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x6178cf2d6585 - test::run_test_in_process::he6fd763a772ff213 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x6178cf2d6585 - test::run_test::{{closure}}::he46f5435849feb5b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x6178cf2acd94 - test::run_test::{{closure}}::h12a66289c31b502a [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x6178cf2acd94 - std::sys::backtrace::__rust_begin_short_backtrace::h614a7925ed7b2f5e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbc654088c5dbff36 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x6178cf2b073a - as core::ops::function::FnOnce<()>>::call_once::h3f631d2ca531b61d [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x6178cf2b073a - std::panicking::catch_unwind::do_call::hd2548748db0aa717 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x6178cf2b073a - std::panicking::catch_unwind::hf7d8620d84df48e2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x6178cf2b073a - std::panic::catch_unwind::hdde75b8543fcb96b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::h991e7d03b432cf3f [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x6178cf2b073a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebddb40255441657 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 41: 0x78d8bd8f82ff - as core::ops::function::FnOnce>::call_once::h55e8930dc7db99a5 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1973:9 [INFO] [stdout] 42: 0x78d8bd8f82ff - std::sys::thread::unix::Thread::new::thread_start::he23d038ee4fa004e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/thread/unix.rs:126:17 [INFO] [stdout] 43: 0x78d8bd693aa4 - [INFO] [stdout] 44: 0x78d8bd720a34 - clone [INFO] [stdout] 45: 0x0 - [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 custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] warning=Internal rustfmt error [INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '2440211fe03bc45c89b6dc1a3df18382ce91e32b'. [INFO] [stdout] note: this is a custom toolchain, which cannot use `rustup component add` [INFO] [stdout] help: if you built this toolchain from source, and used `rustup toolchain link`, then you may be able to build the component with `x.py` [INFO] [stdout] [INFO] [stdout] first mismatch: [INFO] [stdout] expected: [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 } pub (crate) 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 , }) } } } # [doc = "Some comment"] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 16usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 16usize ; # [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 } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 16usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 } pub (crate) 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 }) } } } # [doc = "Some comment"] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 16usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 16usize ; # [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 } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 16usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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] thread 'tests::test_ubx_packet_recv_simple' (29) panicked at src/tests.rs:970:9: [INFO] [stdout] assertion failed: `(left == right)` [INFO] [stdout] [INFO] [stdout] Diff < left / right > : [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 } pub (crate) 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 , }) } } } # [doc = "Some comment"] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 16usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 16usize ; # [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 } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 16usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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] ># [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 > (pub (crate) & 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } pub fn to_owned (& self) -> TestOwned { self . into () } # [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 } pub (crate) 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 }) } } } # [doc = "Some comment"] # [doc = "Owns the underlying buffer of data, contains accessor methods to retrieve data."] pub struct TestOwned (pub (crate) [u8 ; 16usize]) ; impl TestOwned { pub (crate) const PACKET_SIZE : usize = 16usize ; # [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 } pub (crate) 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 < 'a > From < & TestRef < 'a >> for TestOwned { fn from (packet : & TestRef < 'a >) -> Self { let src = packet . as_bytes () ; let mut dst = [0u8 ; 16usize] ; dst [.. src . len ()] . clone_from_slice (src) ; Self (dst) } } impl < 'a > From < TestRef < 'a >> for TestOwned { fn from (packet : TestRef < 'a >) -> Self { (& packet) . into () } } 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 () } } impl core :: fmt :: Debug for TestOwned { 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] [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x78d8bd937682 - std::backtrace_rs::backtrace::libunwind::trace::h22a6a535a50603c6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x78d8bd937682 - std::backtrace_rs::backtrace::trace_unsynchronized::h2503a4f30dbfbaa2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x78d8bd937682 - std::sys::backtrace::_print_fmt::hec54e31f36456895 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x78d8bd937682 - ::fmt::hb1988e8b50fa5f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x78d8bd96870f - core::fmt::rt::Argument::fmt::h3118a66e1a57a586 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x78d8bd96870f - core::fmt::write::hcd056e06a609f600 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x78d8bd8e8521 - std::io::default_write_fmt::hdabc5d6505cb374b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x78d8bd8e8521 - std::io::Write::write_fmt::h18c82179fdc1f9d2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x78d8bd8fdb62 - std::sys::backtrace::BacktraceLock::print::h69f50ba7cfff8317 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x78d8bd905e5a - std::panicking::default_hook::{{closure}}::hfa978eb2255ab3ab [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x78d8bd905cec - std::panicking::default_hook::h09da2eaf8f1deadd [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x6178cf2c0b7e - as core::ops::function::Fn>::call::h1697e4d80f236ef6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 12: 0x6178cf2c0b7e - test::test_main_with_exit_callback::{{closure}}::h8f63929ca9fd483b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x78d8bd9065bf - as core::ops::function::Fn>::call::hba67e0dc3e3fc548 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1987:9 [INFO] [stdout] 14: 0x78d8bd9065bf - std::panicking::panic_with_hook::h13c40d280d130fd3 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x78d8bd90636a - std::panicking::panic_handler::{{closure}}::hd79d22e8a1d3b951 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:707:13 [INFO] [stdout] 16: 0x78d8bd8fdca9 - std::sys::backtrace::__rust_end_short_backtrace::h83414d1ec69cf3a6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x78d8bd8d9cad - __rustc[b78aa6c7b08e5dc4]::rust_begin_unwind [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x78d8bd978730 - core::panicking::panic_fmt::h326b75cf8ee01b13 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panicking.rs:78:14 [INFO] [stdout] 19: 0x6178cf1d84bc - ublox_derive::tests::run_compare_test::hf935acb7582b1e42 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:970:9 [INFO] [stdout] 20: 0x6178cf200797 - ublox_derive::tests::test_ubx_packet_recv_simple::h2f7a1d7ea00e9adc [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:37:5 [INFO] [stdout] 21: 0x6178cf2008a7 - ublox_derive::tests::test_ubx_packet_recv_simple::{{closure}}::hcff3a116fbafe3d2 [INFO] [stdout] at /opt/rustwide/workdir/src/tests.rs:12:33 [INFO] [stdout] 22: 0x6178cf2486e6 - core::ops::function::FnOnce::call_once::h5fee3b771a6d6227 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 23: 0x6178cf2c095b - core::ops::function::FnOnce::call_once::he420dad47d9aac14 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x6178cf2c095b - test::__rust_begin_short_backtrace::h51976f55c263f7c2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x6178cf2d6585 - test::run_test_in_process::{{closure}}::h6aa4339396d33320 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x6178cf2d6585 - as core::ops::function::FnOnce<()>>::call_once::h5bd0ba3863a53529 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x6178cf2d6585 - std::panicking::catch_unwind::do_call::h5c710722c40c5839 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x6178cf2d6585 - std::panicking::catch_unwind::hf41b5be070ce0f19 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x6178cf2d6585 - std::panic::catch_unwind::h4559aa103e6f16d6 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x6178cf2d6585 - test::run_test_in_process::he6fd763a772ff213 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x6178cf2d6585 - test::run_test::{{closure}}::he46f5435849feb5b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x6178cf2acd94 - test::run_test::{{closure}}::h12a66289c31b502a [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x6178cf2acd94 - std::sys::backtrace::__rust_begin_short_backtrace::h614a7925ed7b2f5e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hbc654088c5dbff36 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x6178cf2b073a - as core::ops::function::FnOnce<()>>::call_once::h3f631d2ca531b61d [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x6178cf2b073a - std::panicking::catch_unwind::do_call::hd2548748db0aa717 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x6178cf2b073a - std::panicking::catch_unwind::hf7d8620d84df48e2 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x6178cf2b073a - std::panic::catch_unwind::hdde75b8543fcb96b [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x6178cf2b073a - std::thread::Builder::spawn_unchecked_::{{closure}}::h991e7d03b432cf3f [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x6178cf2b073a - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebddb40255441657 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 41: 0x78d8bd8f82ff - as core::ops::function::FnOnce>::call_once::h55e8930dc7db99a5 [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/alloc/src/boxed.rs:1973:9 [INFO] [stdout] 42: 0x78d8bd8f82ff - std::sys::thread::unix::Thread::new::thread_start::he23d038ee4fa004e [INFO] [stdout] at /rustc/2440211fe03bc45c89b6dc1a3df18382ce91e32b/library/std/src/sys/thread/unix.rs:126:17 [INFO] [stdout] 43: 0x78d8bd693aa4 - [INFO] [stdout] 44: 0x78d8bd720a34 - clone [INFO] [stdout] 45: 0x0 - [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 2.88s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--lib` [INFO] running `Command { std: "docker" "inspect" "1653607b88ab7391e3115a049e6c00744770d6ccf46a2389c00777f8047d415e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1653607b88ab7391e3115a049e6c00744770d6ccf46a2389c00777f8047d415e", kill_on_drop: false }` [INFO] [stdout] 1653607b88ab7391e3115a049e6c00744770d6ccf46a2389c00777f8047d415e