[INFO] fetching crate redact-composer-core 0.2.5...
[INFO] testing redact-composer-core-0.2.5 against 1.90.0 for beta-1.91-3
[INFO] extracting crate redact-composer-core 0.2.5 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate redact-composer-core 0.2.5
[INFO] finished tweaking crates.io crate redact-composer-core 0.2.5
[INFO] tweaked toml for crates.io crate redact-composer-core 0.2.5 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate redact-composer-core 0.2.5 on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 40 packages to latest compatible versions
[INFO] [stderr]       Adding rand v0.8.5 (available: v0.9.2)
[INFO] [stderr]       Adding rand_chacha v0.3.1 (available: v0.9.0)
[INFO] [stderr]       Adding thiserror v1.0.69 (available: v2.0.17)
[INFO] [stderr]       Adding twox-hash v1.6.3 (available: v2.1.2)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded typetag v0.2.21
[INFO] [stderr]   Downloaded typeid v1.0.3
[INFO] [stderr]   Downloaded typetag-impl v0.2.21
[INFO] [stderr]   Downloaded erased-serde v0.4.8
[INFO] [stderr]   Downloaded redact-composer-derive v0.1.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6680ad6170152ad7af1760f7316508ebbdb1feb27daa3215cf40b747ac29f247
[INFO] running `Command { std: "docker" "start" "-a" "6680ad6170152ad7af1760f7316508ebbdb1feb27daa3215cf40b747ac29f247", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6680ad6170152ad7af1760f7316508ebbdb1feb27daa3215cf40b747ac29f247", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6680ad6170152ad7af1760f7316508ebbdb1feb27daa3215cf40b747ac29f247", kill_on_drop: false }`
[INFO] [stdout] 6680ad6170152ad7af1760f7316508ebbdb1feb27daa3215cf40b747ac29f247
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b58cd6b7a16166baef0f1e40f1fa83bf975845b258fa99af09f5a5c3ebc88cc1
[INFO] running `Command { std: "docker" "start" "-a" "b58cd6b7a16166baef0f1e40f1fa83bf975845b258fa99af09f5a5c3ebc88cc1", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling twox-hash v1.6.3
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling redact-composer-derive v0.1.2
[INFO] [stderr]    Compiling redact-composer-core v0.2.5 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/render/context/mod.rs:65:42
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn find<Element: crate::Element>(&self) -> CtxQuery<Element, impl Fn(&Element) -> bool> {
[INFO] [stdout]    |                                          ^^^^^     -------------------------------------------- the same lifetime is hidden here
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn find<Element: crate::Element>(&self) -> CtxQuery<'_, Element, impl Fn(&Element) -> bool> {
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/render/context/mod.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 104 |     ) -> Option<Vec<SegmentRef<F>>> {
[INFO] [stdout]     |                     ------------- the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 104 |     ) -> Option<Vec<SegmentRef<'_, F>>> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:53:27
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn node_iter<'a>(&'a self, start: &'a Node<T>) -> NodeIter<T> {
[INFO] [stdout]    |                           ^^               ^^             ----------- the same lifetime is hidden here
[INFO] [stdout]    |                           |                |
[INFO] [stdout]    |                           |                the lifetime is named here
[INFO] [stdout]    |                           the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn node_iter<'a>(&'a self, start: &'a Node<T>) -> NodeIter<'a, T> {
[INFO] [stdout]    |                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:63:37
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn node_iter_with_skip<'a>(&'a self, start: &'a Node<T>, skip: Vec<usize>) -> NodeIter<T> {
[INFO] [stdout]    |                                     ^^               ^^ the lifetime is named here    ----------- the same lifetime is hidden here
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn node_iter_with_skip<'a>(&'a self, start: &'a Node<T>, skip: Vec<usize>) -> NodeIter<'a, T> {
[INFO] [stdout]    |                                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn iter(&self) -> NodeIter<T> {
[INFO] [stdout]    |                 ^^^^^     ----------- the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn iter(&self) -> NodeIter<'_, T> {
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.37s
[INFO] running `Command { std: "docker" "inspect" "b58cd6b7a16166baef0f1e40f1fa83bf975845b258fa99af09f5a5c3ebc88cc1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b58cd6b7a16166baef0f1e40f1fa83bf975845b258fa99af09f5a5c3ebc88cc1", kill_on_drop: false }`
[INFO] [stdout] b58cd6b7a16166baef0f1e40f1fa83bf975845b258fa99af09f5a5c3ebc88cc1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1ceafbe3040008d3d8cb883b007b9115a80ed9383099f41b6c490074ff0b71f0
[INFO] running `Command { std: "docker" "start" "-a" "1ceafbe3040008d3d8cb883b007b9115a80ed9383099f41b6c490074ff0b71f0", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/render/context/mod.rs:65:42
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn find<Element: crate::Element>(&self) -> CtxQuery<Element, impl Fn(&Element) -> bool> {
[INFO] [stdout]    |                                          ^^^^^     -------------------------------------------- the same lifetime is hidden here
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn find<Element: crate::Element>(&self) -> CtxQuery<'_, Element, impl Fn(&Element) -> bool> {
[INFO] [stdout]    |                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/render/context/mod.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |         &self,
[INFO] [stdout]     |         ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 104 |     ) -> Option<Vec<SegmentRef<F>>> {
[INFO] [stdout]     |                     ------------- the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 104 |     ) -> Option<Vec<SegmentRef<'_, F>>> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:53:27
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn node_iter<'a>(&'a self, start: &'a Node<T>) -> NodeIter<T> {
[INFO] [stdout]    |                           ^^               ^^             ----------- the same lifetime is hidden here
[INFO] [stdout]    |                           |                |
[INFO] [stdout]    |                           |                the lifetime is named here
[INFO] [stdout]    |                           the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn node_iter<'a>(&'a self, start: &'a Node<T>) -> NodeIter<'a, T> {
[INFO] [stdout]    |                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:63:37
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn node_iter_with_skip<'a>(&'a self, start: &'a Node<T>, skip: Vec<usize>) -> NodeIter<T> {
[INFO] [stdout]    |                                     ^^               ^^ the lifetime is named here    ----------- the same lifetime is hidden here
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn node_iter_with_skip<'a>(&'a self, start: &'a Node<T>, skip: Vec<usize>) -> NodeIter<'a, T> {
[INFO] [stdout]    |                                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/render/tree.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn iter(&self) -> NodeIter<T> {
[INFO] [stdout]    |                 ^^^^^     ----------- the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn iter(&self) -> NodeIter<'_, T> {
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling redact-composer-core v0.2.5 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `serde`
[INFO] [stdout]  --> src/test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |     ^^^^^ use of unresolved module or unlinked crate `serde`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `serde`, use `cargo add serde` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Composition: serde::Serialize` is not satisfied
[INFO] [stdout]     --> src/test.rs:14:49
[INFO] [stdout]      |
[INFO] [stdout]   14 |     let serialized_comp = serde_json::to_string(&comp).unwrap();
[INFO] [stdout]      |                           --------------------- ^^^^^ the trait `serde_core::ser::Serialize` is not implemented for `Composition`
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Serialize)]` to your `Composition` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::ser::Serialize`:
[INFO] [stdout]                &'a T
[INFO] [stdout]                &'a mut T
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]                (T0, T1, T2, T3, T4)
[INFO] [stdout]              and 128 others
[INFO] [stdout] note: required by a bound in `serde_json::to_string`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/ser.rs:2247:17
[INFO] [stdout]      |
[INFO] [stdout] 2245 | pub fn to_string<T>(value: &T) -> Result<String>
[INFO] [stdout]      |        --------- required by a bound in this function
[INFO] [stdout] 2246 | where
[INFO] [stdout] 2247 |     T: ?Sized + Serialize,
[INFO] [stdout]      |                 ^^^^^^^^^ required by this bound in `to_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Composition: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/test.rs:22:29
[INFO] [stdout]      |
[INFO] [stdout]   22 |     let comp: Composition = serde_json::from_str(serialized).unwrap();
[INFO] [stdout]      |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `serde_core::de::Deserialize<'_>` is not implemented for `Composition`
[INFO] [stdout]      |
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `Composition` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/de.rs:2699:8
[INFO] [stdout]      |
[INFO] [stdout] 2697 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2698 | where
[INFO] [stdout] 2699 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Composition: serde::Serialize` is not satisfied
[INFO] [stdout]     --> src/test.rs:50:49
[INFO] [stdout]      |
[INFO] [stdout]   50 |     let serialized_comp = serde_json::to_string(&comp).unwrap();
[INFO] [stdout]      |                           --------------------- ^^^^^ the trait `serde_core::ser::Serialize` is not implemented for `Composition`
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Serialize)]` to your `Composition` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::ser::Serialize`:
[INFO] [stdout]                &'a T
[INFO] [stdout]                &'a mut T
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]                (T0, T1, T2, T3, T4)
[INFO] [stdout]              and 128 others
[INFO] [stdout] note: required by a bound in `serde_json::to_string`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/ser.rs:2247:17
[INFO] [stdout]      |
[INFO] [stdout] 2245 | pub fn to_string<T>(value: &T) -> Result<String>
[INFO] [stdout]      |        --------- required by a bound in this function
[INFO] [stdout] 2246 | where
[INFO] [stdout] 2247 |     T: ?Sized + Serialize,
[INFO] [stdout]      |                 ^^^^^^^^^ required by this bound in `to_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Composition: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/test.rs:52:42
[INFO] [stdout]      |
[INFO] [stdout]   52 |     let deserialized_comp: Composition = serde_json::from_str(serialized_comp.as_str()).unwrap();
[INFO] [stdout]      |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `serde_core::de::Deserialize<'_>` is not implemented for `Composition`
[INFO] [stdout]      |
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `Composition` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/de.rs:2699:8
[INFO] [stdout]      |
[INFO] [stdout] 2697 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2698 | where
[INFO] [stdout] 2699 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Composition: serde::Serialize` is not satisfied
[INFO] [stdout]     --> src/test.rs:56:31
[INFO] [stdout]      |
[INFO] [stdout]   56 |         serde_json::to_string(&deserialized_comp).unwrap()
[INFO] [stdout]      |         --------------------- ^^^^^^^^^^^^^^^^^^ the trait `serde_core::ser::Serialize` is not implemented for `Composition`
[INFO] [stdout]      |         |
[INFO] [stdout]      |         required by a bound introduced by this call
[INFO] [stdout]      |
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Serialize)]` to your `Composition` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::ser::Serialize`:
[INFO] [stdout]                &'a T
[INFO] [stdout]                &'a mut T
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]                (T0, T1, T2, T3, T4)
[INFO] [stdout]              and 128 others
[INFO] [stdout] note: required by a bound in `serde_json::to_string`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.145/src/ser.rs:2247:17
[INFO] [stdout]      |
[INFO] [stdout] 2245 | pub fn to_string<T>(value: &T) -> Result<String>
[INFO] [stdout]      |        --------- required by a bound in this function
[INFO] [stdout] 2246 | where
[INFO] [stdout] 2247 |     T: ?Sized + Serialize,
[INFO] [stdout]      |                 ^^^^^^^^^ required by this bound in `to_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `redact-composer-core` (lib test) due to 6 previous errors
[INFO] running `Command { std: "docker" "inspect" "1ceafbe3040008d3d8cb883b007b9115a80ed9383099f41b6c490074ff0b71f0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1ceafbe3040008d3d8cb883b007b9115a80ed9383099f41b6c490074ff0b71f0", kill_on_drop: false }`
[INFO] [stdout] 1ceafbe3040008d3d8cb883b007b9115a80ed9383099f41b6c490074ff0b71f0
