[INFO] fetching crate ublox_derive 0.1.0...
[INFO] testing ublox_derive-0.1.0 against master#1871252fc8bb672d40787e67404e6eaae7059369 for pr-125151
[INFO] extracting crate ublox_derive 0.1.0 into /workspace/builds/worker-4-tc1/source
[INFO] validating manifest of crates.io crate ublox_derive 0.1.0 on toolchain 1871252fc8bb672d40787e67404e6eaae7059369
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate ublox_derive 0.1.0
[INFO] finished tweaking crates.io crate ublox_derive 0.1.0
[INFO] tweaked toml for crates.io crate ublox_derive 0.1.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 24 packages to latest compatible versions
[INFO] [stderr]       Adding linux-raw-sys v0.4.14 (latest: v0.6.4)
[INFO] [stderr]       Adding syn v1.0.109 (latest: v2.0.66)
[INFO] [stderr]       Adding which v4.4.2 (latest: v6.0.1)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] a09719762e61a10c6aafa77e539a9388172efbb27e99424fb190a274e3cdce2c
[INFO] running `Command { std: "docker" "start" "-a" "a09719762e61a10c6aafa77e539a9388172efbb27e99424fb190a274e3cdce2c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a09719762e61a10c6aafa77e539a9388172efbb27e99424fb190a274e3cdce2c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a09719762e61a10c6aafa77e539a9388172efbb27e99424fb190a274e3cdce2c", kill_on_drop: false }`
[INFO] [stdout] a09719762e61a10c6aafa77e539a9388172efbb27e99424fb190a274e3cdce2c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9d0394e47bd165280eaadb669ffae7cf2eb1a05676fd5676cba7889e3e6d0c90
[INFO] running `Command { std: "docker" "start" "-a" "9d0394e47bd165280eaadb669ffae7cf2eb1a05676fd5676cba7889e3e6d0c90", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling ublox_derive v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(());
[INFO] [stdout]     |                ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.48s
[INFO] running `Command { std: "docker" "inspect" "9d0394e47bd165280eaadb669ffae7cf2eb1a05676fd5676cba7889e3e6d0c90", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9d0394e47bd165280eaadb669ffae7cf2eb1a05676fd5676cba7889e3e6d0c90", kill_on_drop: false }`
[INFO] [stdout] 9d0394e47bd165280eaadb669ffae7cf2eb1a05676fd5676cba7889e3e6d0c90
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 609276a8dfb39db4fe4757a1c2cfaf50715923c5bc03df1f097fe3fa7626a04e
[INFO] running `Command { std: "docker" "start" "-a" "609276a8dfb39db4fe4757a1c2cfaf50715923c5bc03df1f097fe3fa7626a04e", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.83
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]    Compiling linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling bitflags v2.5.0
[INFO] [stderr]    Compiling either v1.12.0
[INFO] [stderr]    Compiling home v0.5.9
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]    Compiling ublox_derive v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(());
[INFO] [stdout]     |                ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/input.rs:549:16
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(String);
[INFO] [stdout]     |        ------- ^^^^^^
[INFO] [stdout]     |        |
[INFO] [stdout]     |        field in this struct
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 549 | struct Comment(());
[INFO] [stdout]     |                ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 1 warning emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 10.46s
[INFO] running `Command { std: "docker" "inspect" "609276a8dfb39db4fe4757a1c2cfaf50715923c5bc03df1f097fe3fa7626a04e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "609276a8dfb39db4fe4757a1c2cfaf50715923c5bc03df1f097fe3fa7626a04e", kill_on_drop: false }`
[INFO] [stdout] 609276a8dfb39db4fe4757a1c2cfaf50715923c5bc03df1f097fe3fa7626a04e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:59a85a07ab18ca8720692f8e61effa1c651d9e2ca591e072c2b212bb91a6b8b5" "/opt/rustwide/cargo-home/bin/cargo" "+1871252fc8bb672d40787e67404e6eaae7059369" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 948dec773ae7f8466c8330f30badd32688e27867911d0b12d2bdb9c62b6e1b52
[INFO] running `Command { std: "docker" "start" "-a" "948dec773ae7f8466c8330f30badd32688e27867911d0b12d2bdb9c62b6e1b52", kill_on_drop: false }`
[INFO] [stderr] warning: field `0` is never read
[INFO] [stderr]    --> src/input.rs:549:16
[INFO] [stderr]     |
[INFO] [stderr] 549 | struct Comment(String);
[INFO] [stderr]     |        ------- ^^^^^^
[INFO] [stderr]     |        |
[INFO] [stderr]     |        field in this struct
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stderr]     |
[INFO] [stderr] 549 | struct Comment(());
[INFO] [stderr]     |                ~~
[INFO] [stderr] 
[INFO] [stderr] warning: `ublox_derive` (lib) generated 1 warning
[INFO] [stderr] warning: `ublox_derive` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ublox_derive-8ebc3dc290a3df10)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test tests::test_upgrade_enum ... ok
[INFO] [stdout] test tests::test_extend_bitflags ... ok
[INFO] [stdout] test tests::test_ubx_packet_recv_dyn_len ... FAILED
[INFO] [stdout] test tests::test_ubx_packet_send ... FAILED
[INFO] [stdout] test tests::test_ubx_packet_recv_simple ... FAILED
[INFO] [stdout] test tests::test_define_recv_packets ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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] e # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ()) ,) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] g # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ())) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] thread 'tests::test_ubx_packet_recv_dyn_len' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ()) ,) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = ""] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = None ; const MAX_PAYLOAD_LEN : u16 = 38u16 ; } # [doc = ""] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn f1_raw (& self) -> & [u8] { let val = & self . 0 [0usize .. (0usize + 8usize)] ; val } # [doc = ""] # [inline] pub fn f1 (& self) -> & str { let val = & self . 0 [0usize .. (0usize + 8usize)] ; let val = unpack_str (val) ; val } # [doc = ""] # [inline] pub fn rest (& self) -> & [u8] { & self . 0 [8usize ..] } fn validate (payload : & [u8]) -> Result < () , ParserError > { let got = payload . len () ; let min = 8usize ; ; if got >= min { Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect : min , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (f1) , & self . f1 ()) . field (stringify ! (rest) , & self . rest ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (f1) , & self . f1 ()) ? ; state . serialize_entry (stringify ! (rest) , & crate :: ubx_packets :: FieldIter (self . rest ())) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f63b47039e5 - std::backtrace_rs::backtrace::libunwind::trace::h59d96bdb08384354
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
[INFO] [stdout]    1:     0x7f63b47039e5 - std::backtrace_rs::backtrace::trace_unsynchronized::h9cf5becacfc93fba
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x7f63b47039e5 - std::sys_common::backtrace::_print_fmt::h10b76d10405dbd48
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:68:5
[INFO] [stdout]    3:     0x7f63b47039e5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h6ed9e62a156d84e4
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:44:22
[INFO] [stdout]    4:     0x7f63b4752b9b - core::fmt::rt::Argument::fmt::h645c680983f03c9f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/rt.rs:165:63
[INFO] [stdout]    5:     0x7f63b4752b9b - core::fmt::write::h8bcd80919a02be29
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/mod.rs:1169:21
[INFO] [stdout]    6:     0x7f63b46f86cf - std::io::Write::write_fmt::h8d0c47c662cad79c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/io/mod.rs:1835:15
[INFO] [stdout]    7:     0x7f63b47037be - std::sys_common::backtrace::_print::h6306f131a28d62b0
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:47:5
[INFO] [stdout]    8:     0x7f63b47037be - std::sys_common::backtrace::print::h7079288e0a26dfcc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:34:9
[INFO] [stdout]    9:     0x7f63b47061b9 - std::panicking::default_hook::{{closure}}::hb063ecec81a736ba
[INFO] [stdout]   10:     0x7f63b4705e7e - std::panicking::default_hook::hd56ee406bf547b5c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:295:9
[INFO] [stdout]   11:     0x56195a8f661a - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::he5eacdef44c8728f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   12:     0x56195a8f661a - test::test_main::{{closure}}::h0ec9aed229e79095
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x7f63b47068eb - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcbd0d80e1ad4e4f9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   14:     0x7f63b47068eb - std::panicking::rust_panic_with_hook::h624aa3ca42ebb8f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:799:13
[INFO] [stdout]   15:     0x7f63b4706664 - std::panicking::begin_panic_handler::{{closure}}::hbc4e76194a5e287c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:664:13
[INFO] [stdout]   16:     0x7f63b4703ea9 - std::sys_common::backtrace::__rust_end_short_backtrace::h847fedc9d1ff7b6d
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:171:18
[INFO] [stdout]   17:     0x7f63b4706397 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:652:5
[INFO] [stdout]   18:     0x7f63b474f163 - core::panicking::panic_fmt::hec11a924b87ce965
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:72:14
[INFO] [stdout]   19:     0x56195a82e957 - ublox_derive::tests::run_compare_test::h2596b87db59cb965
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   20:     0x56195a84138c - ublox_derive::tests::test_ubx_packet_recv_dyn_len::h6d1312f5c0d5bdcb
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:225:5
[INFO] [stdout]   21:     0x56195a83b9b7 - ublox_derive::tests::test_ubx_packet_recv_dyn_len::{{closure}}::h2d2a3718c0a9b6b5
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:205:34
[INFO] [stdout]   22:     0x56195a8a37e6 - core::ops::function::FnOnce::call_once::hc3eb7f39b46f6a9c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x56195a8faffb - core::ops::function::FnOnce::call_once::h2e43a8f6f3d94b99
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x56195a8faffb - test::__rust_begin_short_backtrace::h214c9f2d2d3fee90
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:625:18
[INFO] [stdout]   25:     0x56195a8fa701 - test::run_test_in_process::{{closure}}::h510b7ba7990692a5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:60
[INFO] [stdout]   26:     0x56195a8fa701 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4157186197a93871
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   27:     0x56195a8fa701 - std::panicking::try::do_call::h1bf2463bccd4b28c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   28:     0x56195a8fa701 - std::panicking::try::hd6d4808c9fab4fa5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   29:     0x56195a8fa701 - std::panic::catch_unwind::hd5641d97d123f9f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   30:     0x56195a8fa701 - test::run_test_in_process::hc273b71c8b878a4c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:27
[INFO] [stdout]   31:     0x56195a8fa701 - test::run_test::{{closure}}::h6838df834eb8467e
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:569:43
[INFO] [stdout]   32:     0x56195a8c30c4 - test::run_test::{{closure}}::h608b98ecff5665fb
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:599:41
[INFO] [stdout]   33:     0x56195a8c30c4 - std::sys_common::backtrace::__rust_begin_short_backtrace::hdc4182b97d1042e9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   34:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h571773fd21d674c8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   35:     0x56195a8c7af2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hdcd384cf2fa70ba3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   36:     0x56195a8c7af2 - std::panicking::try::do_call::h4f1a44bd81423be1
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   37:     0x56195a8c7af2 - std::panicking::try::h5e02afcb81dcd361
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   38:     0x56195a8c7af2 - std::panic::catch_unwind::h022f75775bfd8c45
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   39:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::hf5a62e9e4e6df1f8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   40:     0x56195a8c7af2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6d56360aeb9509a7
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7a343dc551c06baa
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   42:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h30b8111cbaa644f3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   43:     0x7f63b471078b - std::sys::pal::unix::thread::Thread::new::thread_start::h7404e134e61e7a11
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   44:     0x7f63b438fac3 - <unknown>
[INFO] [stdout]   45:     0x7f63b4420a04 - __clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_ubx_packet_send stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '1871252fc8bb672d40787e67404e6eaae7059369'.
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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] e # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 , } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1] ,] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] g # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1]] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] thread 'tests::test_ubx_packet_send' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 , } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1] ,] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (9u16) ; const MAX_PAYLOAD_LEN : u16 = 9u16 ; } # [doc = "Some comment"] # [doc = "Struct that is used to construct packets, see the crate-level documentation for more information"] # [derive (Default)] pub struct TestBuilder { # [doc = ""] pub itow : u32 , # [doc = "this is lat"] pub lat_degrees : f64 , # [doc = "this is a"] pub a : u8 } impl TestBuilder { pub const PACKET_LEN : usize = 17usize ; # [inline] pub fn into_packet_bytes (self) -> [u8 ; Self :: PACKET_LEN] { let mut ret = [0u8 ; Self :: PACKET_LEN] ; ret [0] = SYNC_CHAR_1 ; ret [1] = SYNC_CHAR_2 ; ret [2] = Test :: CLASS ; ret [3] = Test :: ID ; let pack_len_bytes = 9u16 . to_le_bytes () ; ret [4] = pack_len_bytes [0] ; ret [5] = pack_len_bytes [1] ; let bytes = self . itow . to_le_bytes () ; ret [6usize] = bytes [0usize] ; ret [7usize] = bytes [1usize] ; ret [8usize] = bytes [2usize] ; ret [9usize] = bytes [3usize] ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; ret [10usize] = bytes [0usize] ; ret [11usize] = bytes [1usize] ; ret [12usize] = bytes [2usize] ; ret [13usize] = bytes [3usize] ; let bytes = self . a . to_le_bytes () ; ret [14usize] = bytes [0usize] ; let (ck_a , ck_b) = ubx_checksum (& ret [2 .. (Self :: PACKET_LEN - 2)]) ; ret [Self :: PACKET_LEN - 2] = ck_a ; ret [Self :: PACKET_LEN - 1] = ck_b ; ret } } impl From < TestBuilder > for [u8 ; 17usize] { fn from (x : TestBuilder) -> Self { x . into_packet_bytes () } } impl UbxPacketCreator for TestBuilder { # [inline] fn create_packet < T : MemWriter > (self , out : & mut T) -> Result < () , MemWriterError < T :: Error >> { out . reserve_allocate (17usize) ? ; let len_bytes = 9u16 . to_le_bytes () ; let header = [SYNC_CHAR_1 , SYNC_CHAR_2 , Test :: CLASS , Test :: ID , len_bytes [0] , len_bytes [1]] ; out . write (& header) ? ; let mut checksum_calc = UbxChecksumCalc :: default () ; checksum_calc . update (& header [2 ..]) ; let bytes = self . itow . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = ScaleBack :: < f64 > (1. / 1e-7) . as_i32 (self . lat_degrees) . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let bytes = self . a . to_le_bytes () ; out . write (& bytes) ? ; checksum_calc . update (& bytes) ; let (ck_a , ck_b) = checksum_calc . result () ; out . write (& [ck_a , ck_b]) ? ; Ok (()) } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f63b47039e5 - std::backtrace_rs::backtrace::libunwind::trace::h59d96bdb08384354
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
[INFO] [stdout]    1:     0x7f63b47039e5 - std::backtrace_rs::backtrace::trace_unsynchronized::h9cf5becacfc93fba
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x7f63b47039e5 - std::sys_common::backtrace::_print_fmt::h10b76d10405dbd48
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:68:5
[INFO] [stdout]    3:     0x7f63b47039e5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h6ed9e62a156d84e4
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:44:22
[INFO] [stdout]    4:     0x7f63b4752b9b - core::fmt::rt::Argument::fmt::h645c680983f03c9f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/rt.rs:165:63
[INFO] [stdout]    5:     0x7f63b4752b9b - core::fmt::write::h8bcd80919a02be29
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/mod.rs:1169:21
[INFO] [stdout]    6:     0x7f63b46f86cf - std::io::Write::write_fmt::h8d0c47c662cad79c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/io/mod.rs:1835:15
[INFO] [stdout]    7:     0x7f63b47037be - std::sys_common::backtrace::_print::h6306f131a28d62b0
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:47:5
[INFO] [stdout]    8:     0x7f63b47037be - std::sys_common::backtrace::print::h7079288e0a26dfcc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:34:9
[INFO] [stdout]    9:     0x7f63b47061b9 - std::panicking::default_hook::{{closure}}::hb063ecec81a736ba
[INFO] [stdout]   10:     0x7f63b4705e7e - std::panicking::default_hook::hd56ee406bf547b5c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:295:9
[INFO] [stdout]   11:     0x56195a8f661a - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::he5eacdef44c8728f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   12:     0x56195a8f661a - test::test_main::{{closure}}::h0ec9aed229e79095
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x7f63b47068eb - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcbd0d80e1ad4e4f9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   14:     0x7f63b47068eb - std::panicking::rust_panic_with_hook::h624aa3ca42ebb8f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:799:13
[INFO] [stdout]   15:     0x7f63b4706664 - std::panicking::begin_panic_handler::{{closure}}::hbc4e76194a5e287c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:664:13
[INFO] [stdout]   16:     0x7f63b4703ea9 - std::sys_common::backtrace::__rust_end_short_backtrace::h847fedc9d1ff7b6d
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:171:18
[INFO] [stdout]   17:     0x7f63b4706397 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:652:5
[INFO] [stdout]   18:     0x7f63b474f163 - core::panicking::panic_fmt::hec11a924b87ce965
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:72:14
[INFO] [stdout]   19:     0x56195a82e957 - ublox_derive::tests::run_compare_test::h2596b87db59cb965
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   20:     0x56195a84818d - ublox_derive::tests::test_ubx_packet_send::he7457436e45c8813
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:343:5
[INFO] [stdout]   21:     0x56195a841567 - ublox_derive::tests::test_ubx_packet_send::{{closure}}::hae6897a9ce693dbf
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:322:26
[INFO] [stdout]   22:     0x56195a8a34d6 - core::ops::function::FnOnce::call_once::h557d5d0605a6da41
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x56195a8faffb - core::ops::function::FnOnce::call_once::h2e43a8f6f3d94b99
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x56195a8faffb - test::__rust_begin_short_backtrace::h214c9f2d2d3fee90
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:625:18
[INFO] [stdout]   25:     0x56195a8fa701 - test::run_test_in_process::{{closure}}::h510b7ba7990692a5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:60
[INFO] [stdout]   26:     0x56195a8fa701 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4157186197a93871
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   27:     0x56195a8fa701 - std::panicking::try::do_call::h1bf2463bccd4b28c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   28:     0x56195a8fa701 - std::panicking::try::hd6d4808c9fab4fa5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   29:     0x56195a8fa701 - std::panic::catch_unwind::hd5641d97d123f9f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   30:     0x56195a8fa701 - test::run_test_in_process::hc273b71c8b878a4c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:27
[INFO] [stdout]   31:     0x56195a8fa701 - test::run_test::{{closure}}::h6838df834eb8467e
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:569:43
[INFO] [stdout]   32:     0x56195a8c30c4 - test::run_test::{{closure}}::h608b98ecff5665fb
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:599:41
[INFO] [stdout]   33:     0x56195a8c30c4 - std::sys_common::backtrace::__rust_begin_short_backtrace::hdc4182b97d1042e9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   34:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h571773fd21d674c8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   35:     0x56195a8c7af2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hdcd384cf2fa70ba3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   36:     0x56195a8c7af2 - std::panicking::try::do_call::h4f1a44bd81423be1
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   37:     0x56195a8c7af2 - std::panicking::try::h5e02afcb81dcd361
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   38:     0x56195a8c7af2 - std::panic::catch_unwind::h022f75775bfd8c45
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   39:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::hf5a62e9e4e6df1f8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   40:     0x56195a8c7af2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6d56360aeb9509a7
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7a343dc551c06baa
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   42:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h30b8111cbaa644f3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   43:     0x7f63b471078b - std::sys::pal::unix::thread::Thread::new::thread_start::h7404e134e61e7a11
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   44:     0x7f63b438fac3 - <unknown>
[INFO] [stdout]   45:     0x7f63b4420a04 - __clone
[INFO] [stdout]   46:                0x0 - <unknown>
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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] e # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize] ,] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) , }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] g # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize]] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] thread 'tests::test_ubx_packet_recv_simple' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize] ,]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize] ,] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) , }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got , }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "Some comment"] pub struct Test ; impl UbxPacketMeta for Test { const CLASS : u8 = 1u8 ; const ID : u8 = 2u8 ; const FIXED_PAYLOAD_LEN : Option < u16 > = Some (16u16) ; const MAX_PAYLOAD_LEN : u16 = 16u16 ; } # [doc = "Some comment"] # [doc = "Contains a reference to an underlying buffer, contains accessor methods to retrieve data."] pub struct TestRef < 'a > (& 'a [u8]) ; impl < 'a > TestRef < 'a > { # [inline] pub fn as_bytes (& self) -> & [u8] { self . 0 } # [doc = ""] # [inline] pub fn itow (& self) -> u32 { let val = < u32 > :: from_le_bytes ([self . 0 [0usize] , self . 0 [1usize] , self . 0 [2usize] , self . 0 [3usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees_raw (& self) -> i32 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; val } # [doc = "this is lat"] # [inline] pub fn lat_degrees (& self) -> f64 { let val = < i32 > :: from_le_bytes ([self . 0 [4usize] , self . 0 [5usize] , self . 0 [6usize] , self . 0 [7usize]]) ; let val = < f64 > :: from (val) ; let val = val * 1e-7 ; val } # [doc = "this is a"] # [inline] pub fn a (& self) -> u8 { let val = self . 0 [8usize] ; val } # [doc = ""] # [inline] pub fn reserved1 (& self) -> [u8 ; 5] { let val = [self . 0 [9usize] , self . 0 [10usize] , self . 0 [11usize] , self . 0 [12usize] , self . 0 [13usize]] ; val } # [doc = ""] # [inline] pub fn flags_raw (& self) -> u8 { let val = self . 0 [14usize] ; val } # [doc = ""] # [inline] pub fn flags (& self) -> Flags { let val = self . 0 [14usize] ; let val = < Flags > :: from_unchecked (val) ; val } # [doc = ""] # [inline] pub fn b (& self) -> i8 { let val = < i8 > :: from_le_bytes ([self . 0 [15usize]]) ; val } fn validate (payload : & [u8]) -> Result < () , ParserError > { let expect = 16usize ; let got = payload . len () ; if got == expect { let val = payload [14usize] ; if ! < Flags > :: is_valid (val) { return Err (ParserError :: InvalidField { packet : "Test" , field : stringify ! (flags) }) ; } Ok (()) } else { Err (ParserError :: InvalidPacketLen { packet : "Test" , expect , got }) } } } impl core :: fmt :: Debug for TestRef < '_ > { fn fmt (& self , f : & mut core :: fmt :: Formatter < '_ >) -> core :: fmt :: Result { f . debug_struct ("Test") . field (stringify ! (itow) , & self . itow ()) . field (stringify ! (lat) , & self . lat_degrees ()) . field (stringify ! (a) , & self . a ()) . field (stringify ! (reserved1) , & self . reserved1 ()) . field (stringify ! (flags) , & self . flags ()) . field (stringify ! (b) , & self . b ()) . finish () } } # [cfg (feature = "serde")] impl SerializeUbxPacketFields for TestRef < '_ > { fn serialize_fields < S > (& self , state : & mut S) -> Result < () , S :: Error > where S : serde :: ser :: SerializeMap , { state . serialize_entry (stringify ! (itow) , & self . itow ()) ? ; state . serialize_entry (stringify ! (lat) , & self . lat_degrees ()) ? ; state . serialize_entry (stringify ! (a) , & self . a ()) ? ; state . serialize_entry (stringify ! (reserved1) , & self . reserved1 ()) ? ; state . serialize_entry (stringify ! (flags) , & self . flags ()) ? ; state . serialize_entry (stringify ! (b) , & self . b ()) ? ; Ok (()) } } # [cfg (feature = "serde")] impl serde :: Serialize for TestRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; self . serialize_fields (& mut state) ? ; state . end () } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f63b47039e5 - std::backtrace_rs::backtrace::libunwind::trace::h59d96bdb08384354
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
[INFO] [stdout]    1:     0x7f63b47039e5 - std::backtrace_rs::backtrace::trace_unsynchronized::h9cf5becacfc93fba
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x7f63b47039e5 - std::sys_common::backtrace::_print_fmt::h10b76d10405dbd48
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:68:5
[INFO] [stdout]    3:     0x7f63b47039e5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h6ed9e62a156d84e4
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:44:22
[INFO] [stdout]    4:     0x7f63b4752b9b - core::fmt::rt::Argument::fmt::h645c680983f03c9f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/rt.rs:165:63
[INFO] [stdout]    5:     0x7f63b4752b9b - core::fmt::write::h8bcd80919a02be29
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/mod.rs:1169:21
[INFO] [stdout]    6:     0x7f63b46f86cf - std::io::Write::write_fmt::h8d0c47c662cad79c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/io/mod.rs:1835:15
[INFO] [stdout]    7:     0x7f63b47037be - std::sys_common::backtrace::_print::h6306f131a28d62b0
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:47:5
[INFO] [stdout]    8:     0x7f63b47037be - std::sys_common::backtrace::print::h7079288e0a26dfcc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:34:9
[INFO] [stdout]    9:     0x7f63b47061b9 - std::panicking::default_hook::{{closure}}::hb063ecec81a736ba
[INFO] [stdout]   10:     0x7f63b4705e7e - std::panicking::default_hook::hd56ee406bf547b5c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:295:9
[INFO] [stdout]   11:     0x56195a8f661a - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::he5eacdef44c8728f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   12:     0x56195a8f661a - test::test_main::{{closure}}::h0ec9aed229e79095
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x7f63b47068eb - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcbd0d80e1ad4e4f9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   14:     0x7f63b47068eb - std::panicking::rust_panic_with_hook::h624aa3ca42ebb8f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:799:13
[INFO] [stdout]   15:     0x7f63b4706664 - std::panicking::begin_panic_handler::{{closure}}::hbc4e76194a5e287c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:664:13
[INFO] [stdout]   16:     0x7f63b4703ea9 - std::sys_common::backtrace::__rust_end_short_backtrace::h847fedc9d1ff7b6d
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:171:18
[INFO] [stdout]   17:     0x7f63b4706397 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:652:5
[INFO] [stdout]   18:     0x7f63b474f163 - core::panicking::panic_fmt::hec11a924b87ce965
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:72:14
[INFO] [stdout]   19:     0x56195a82e957 - ublox_derive::tests::run_compare_test::h2596b87db59cb965
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   20:     0x56195a83b7d0 - ublox_derive::tests::test_ubx_packet_recv_simple::hbe2ac36017858485
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:37:5
[INFO] [stdout]   21:     0x56195a831167 - ublox_derive::tests::test_ubx_packet_recv_simple::{{closure}}::ha0ba4ce293b7afad
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:12:33
[INFO] [stdout]   22:     0x56195a8a36d6 - core::ops::function::FnOnce::call_once::h9aff74ae67ce260a
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x56195a8faffb - core::ops::function::FnOnce::call_once::h2e43a8f6f3d94b99
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x56195a8faffb - test::__rust_begin_short_backtrace::h214c9f2d2d3fee90
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:625:18
[INFO] [stdout]   25:     0x56195a8fa701 - test::run_test_in_process::{{closure}}::h510b7ba7990692a5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:60
[INFO] [stdout]   26:     0x56195a8fa701 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4157186197a93871
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   27:     0x56195a8fa701 - std::panicking::try::do_call::h1bf2463bccd4b28c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   28:     0x56195a8fa701 - std::panicking::try::hd6d4808c9fab4fa5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   29:     0x56195a8fa701 - std::panic::catch_unwind::hd5641d97d123f9f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   30:     0x56195a8fa701 - test::run_test_in_process::hc273b71c8b878a4c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:27
[INFO] [stdout]   31:     0x56195a8fa701 - test::run_test::{{closure}}::h6838df834eb8467e
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:569:43
[INFO] [stdout]   32:     0x56195a8c30c4 - test::run_test::{{closure}}::h608b98ecff5665fb
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:599:41
[INFO] [stdout]   33:     0x56195a8c30c4 - std::sys_common::backtrace::__rust_begin_short_backtrace::hdc4182b97d1042e9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   34:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h571773fd21d674c8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   35:     0x56195a8c7af2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hdcd384cf2fa70ba3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   36:     0x56195a8c7af2 - std::panicking::try::do_call::h4f1a44bd81423be1
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   37:     0x56195a8c7af2 - std::panicking::try::h5e02afcb81dcd361
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   38:     0x56195a8c7af2 - std::panic::catch_unwind::h022f75775bfd8c45
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   39:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::hf5a62e9e4e6df1f8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   40:     0x56195a8c7af2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6d56360aeb9509a7
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7a343dc551c06baa
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   42:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h30b8111cbaa644f3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   43:     0x7f63b471078b - std::sys::pal::unix::thread::Thread::new::thread_start::h7404e134e61e7a11
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   44:     0x7f63b438fac3 - <unknown>
[INFO] [stdout]   45:     0x7f63b4420a04 - __clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_define_recv_packets stdout ----
[INFO] [stdout] warning=Internal rustfmt error
[INFO] [stdout] error: 'rustfmt' is not installed for the custom toolchain '1871252fc8bb672d40787e67404e6eaae7059369'.
[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 '1871252fc8bb672d40787e67404e6eaae7059369'.
[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] e # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16) ,) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] g # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16)) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] thread 'tests::test_define_recv_packets' panicked at src/tests.rs:705:9:
[INFO] [stdout] Expect:
[INFO] [stdout] # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) , } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8] ,) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id , })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16) ,) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] Got:
[INFO] [stdout] # [doc = "All possible packets enum"] # [derive (Debug)] pub enum PacketRef < 'a > { Pack1 (Pack1Ref < 'a >) , Pack2 (Pack2Ref < 'a >) , Unknown (UnknownPacketRef < 'a >) } impl < 'a > PacketRef < 'a > { pub fn class_and_msg_id (& self) -> (u8 , u8) { match * self { PacketRef :: Pack1 (_) => (Pack1 :: CLASS , Pack1 :: ID) , PacketRef :: Pack2 (_) => (Pack2 :: CLASS , Pack2 :: ID) , PacketRef :: Unknown (ref pack) => (pack . class , pack . msg_id) , } } } pub (crate) fn match_packet (class : u8 , msg_id : u8 , payload : & [u8]) -> Result < PacketRef , ParserError > { match (class , msg_id) { (Pack1 :: CLASS , Pack1 :: ID) if < Pack1Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack1 (Pack1Ref (payload))) } (Pack2 :: CLASS , Pack2 :: ID) if < Pack2Ref > :: validate (payload) . is_ok () => { Ok (PacketRef :: Pack2 (Pack2Ref (payload))) } _ => Ok (PacketRef :: Unknown (UnknownPacketRef { payload , class , msg_id })) , } } const fn max_u16 (a : u16 , b : u16) -> u16 { [a , b] [(a < b) as usize] } pub (crate) const MAX_PAYLOAD_LEN : u16 = max_u16 (Pack2 :: MAX_PAYLOAD_LEN , max_u16 (Pack1 :: MAX_PAYLOAD_LEN , 0u16)) ; # [cfg (feature = "serde")] pub struct PacketSerializer < 'a , T > { class : u8 , msg_id : u8 , msg : & 'a T , } # [cfg (feature = "serde")] impl < 'a , T : SerializeUbxPacketFields > serde :: Serialize for PacketSerializer < 'a , T > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { let mut state = serializer . serialize_map (None) ? ; state . serialize_entry ("class" , & self . class) ? ; state . serialize_entry ("msg_id" , & self . msg_id) ? ; self . msg . serialize_fields (& mut state) ? ; state . end () } } # [cfg (feature = "serde")] impl serde :: Serialize for PacketRef < '_ > { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : serde :: Serializer , { match * self { PacketRef :: Pack1 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack1 :: CLASS , msg_id : Pack1 :: ID , msg , } . serialize (serializer) , PacketRef :: Pack2 (ref msg) => crate :: ubx_packets :: PacketSerializer { class : Pack2 :: CLASS , msg_id : Pack2 :: ID , msg , } . serialize (serializer) , PacketRef :: Unknown (ref pack) => pack . serialize (serializer) , } } }
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f63b47039e5 - std::backtrace_rs::backtrace::libunwind::trace::h59d96bdb08384354
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
[INFO] [stdout]    1:     0x7f63b47039e5 - std::backtrace_rs::backtrace::trace_unsynchronized::h9cf5becacfc93fba
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
[INFO] [stdout]    2:     0x7f63b47039e5 - std::sys_common::backtrace::_print_fmt::h10b76d10405dbd48
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:68:5
[INFO] [stdout]    3:     0x7f63b47039e5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h6ed9e62a156d84e4
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:44:22
[INFO] [stdout]    4:     0x7f63b4752b9b - core::fmt::rt::Argument::fmt::h645c680983f03c9f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/rt.rs:165:63
[INFO] [stdout]    5:     0x7f63b4752b9b - core::fmt::write::h8bcd80919a02be29
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/fmt/mod.rs:1169:21
[INFO] [stdout]    6:     0x7f63b46f86cf - std::io::Write::write_fmt::h8d0c47c662cad79c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/io/mod.rs:1835:15
[INFO] [stdout]    7:     0x7f63b47037be - std::sys_common::backtrace::_print::h6306f131a28d62b0
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:47:5
[INFO] [stdout]    8:     0x7f63b47037be - std::sys_common::backtrace::print::h7079288e0a26dfcc
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:34:9
[INFO] [stdout]    9:     0x7f63b47061b9 - std::panicking::default_hook::{{closure}}::hb063ecec81a736ba
[INFO] [stdout]   10:     0x7f63b4705e7e - std::panicking::default_hook::hd56ee406bf547b5c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:295:9
[INFO] [stdout]   11:     0x56195a8f661a - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::he5eacdef44c8728f
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   12:     0x56195a8f661a - test::test_main::{{closure}}::h0ec9aed229e79095
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:137:21
[INFO] [stdout]   13:     0x7f63b47068eb - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcbd0d80e1ad4e4f9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2036:9
[INFO] [stdout]   14:     0x7f63b47068eb - std::panicking::rust_panic_with_hook::h624aa3ca42ebb8f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:799:13
[INFO] [stdout]   15:     0x7f63b4706664 - std::panicking::begin_panic_handler::{{closure}}::hbc4e76194a5e287c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:664:13
[INFO] [stdout]   16:     0x7f63b4703ea9 - std::sys_common::backtrace::__rust_end_short_backtrace::h847fedc9d1ff7b6d
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:171:18
[INFO] [stdout]   17:     0x7f63b4706397 - rust_begin_unwind
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:652:5
[INFO] [stdout]   18:     0x7f63b474f163 - core::panicking::panic_fmt::hec11a924b87ce965
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panicking.rs:72:14
[INFO] [stdout]   19:     0x56195a82e957 - ublox_derive::tests::run_compare_test::h2596b87db59cb965
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:705:9
[INFO] [stdout]   20:     0x56195a850924 - ublox_derive::tests::test_define_recv_packets::he3276b477cb4052f
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:529:5
[INFO] [stdout]   21:     0x56195a84af87 - ublox_derive::tests::test_define_recv_packets::{{closure}}::h6bc19445d3eb6570
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tests.rs:516:30
[INFO] [stdout]   22:     0x56195a8a3966 - core::ops::function::FnOnce::call_once::hedec1d0da49e8d62
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x56195a8faffb - core::ops::function::FnOnce::call_once::h2e43a8f6f3d94b99
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x56195a8faffb - test::__rust_begin_short_backtrace::h214c9f2d2d3fee90
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:625:18
[INFO] [stdout]   25:     0x56195a8fa701 - test::run_test_in_process::{{closure}}::h510b7ba7990692a5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:60
[INFO] [stdout]   26:     0x56195a8fa701 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4157186197a93871
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   27:     0x56195a8fa701 - std::panicking::try::do_call::h1bf2463bccd4b28c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   28:     0x56195a8fa701 - std::panicking::try::hd6d4808c9fab4fa5
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   29:     0x56195a8fa701 - std::panic::catch_unwind::hd5641d97d123f9f2
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   30:     0x56195a8fa701 - test::run_test_in_process::hc273b71c8b878a4c
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:648:27
[INFO] [stdout]   31:     0x56195a8fa701 - test::run_test::{{closure}}::h6838df834eb8467e
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:569:43
[INFO] [stdout]   32:     0x56195a8c30c4 - test::run_test::{{closure}}::h608b98ecff5665fb
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/test/src/lib.rs:599:41
[INFO] [stdout]   33:     0x56195a8c30c4 - std::sys_common::backtrace::__rust_begin_short_backtrace::hdc4182b97d1042e9
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys_common/backtrace.rs:155:18
[INFO] [stdout]   34:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h571773fd21d674c8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:542:17
[INFO] [stdout]   35:     0x56195a8c7af2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hdcd384cf2fa70ba3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/panic/unwind_safe.rs:272:9
[INFO] [stdout]   36:     0x56195a8c7af2 - std::panicking::try::do_call::h4f1a44bd81423be1
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:559:40
[INFO] [stdout]   37:     0x56195a8c7af2 - std::panicking::try::h5e02afcb81dcd361
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panicking.rs:523:19
[INFO] [stdout]   38:     0x56195a8c7af2 - std::panic::catch_unwind::h022f75775bfd8c45
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/panic.rs:149:14
[INFO] [stdout]   39:     0x56195a8c7af2 - std::thread::Builder::spawn_unchecked_::{{closure}}::hf5a62e9e4e6df1f8
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/thread/mod.rs:541:30
[INFO] [stdout]   40:     0x56195a8c7af2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6d56360aeb9509a7
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7a343dc551c06baa
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   42:     0x7f63b471078b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h30b8111cbaa644f3
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/alloc/src/boxed.rs:2022:9
[INFO] [stdout]   43:     0x7f63b471078b - std::sys::pal::unix::thread::Thread::new::thread_start::h7404e134e61e7a11
[INFO] [stdout]                                at /rustc/1871252fc8bb672d40787e67404e6eaae7059369/library/std/src/sys/pal/unix/thread.rs:108:17
[INFO] [stdout]   44:     0x7f63b438fac3 - <unknown>
[INFO] [stdout]   45:     0x7f63b4420a04 - __clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_define_recv_packets
[INFO] [stdout]     tests::test_ubx_packet_recv_dyn_len
[INFO] [stdout]     tests::test_ubx_packet_recv_simple
[INFO] [stdout]     tests::test_ubx_packet_send
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "948dec773ae7f8466c8330f30badd32688e27867911d0b12d2bdb9c62b6e1b52", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "948dec773ae7f8466c8330f30badd32688e27867911d0b12d2bdb9c62b6e1b52", kill_on_drop: false }`
[INFO] [stdout] 948dec773ae7f8466c8330f30badd32688e27867911d0b12d2bdb9c62b6e1b52
