[INFO] fetching crate cosmolkit-tautomer 0.5.1-rc.3...
[INFO] testing cosmolkit-tautomer-0.5.1-rc.3 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate cosmolkit-tautomer 0.5.1-rc.3 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate cosmolkit-tautomer 0.5.1-rc.3
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate cosmolkit-tautomer 0.5.1-rc.3
[INFO] tweaked toml for crates.io crate cosmolkit-tautomer 0.5.1-rc.3 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate cosmolkit-tautomer 0.5.1-rc.3 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate cosmolkit-tautomer 0.5.1-rc.3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd
[INFO] running `Command { std: "docker" "start" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling unicode-ident v1.0.27
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling libc v0.2.190
[INFO] [stderr]    Compiling web-time v1.1.0
[INFO] [stderr]    Compiling syn v3.0.9
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling hashify v0.3.1
[INFO] [stderr]    Compiling cosmolkit-ringdecomposer v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-types v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-tautomer v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `kekulized` is never used
[INFO] [stdout]    --> src/engine.rs:170:15
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) fn kekulized(candidate: &TautomerRecord) -> Result<TautomerRecord, TautomerRunError> {
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MissingKekulizedBranch` is never constructed
[INFO] [stdout]   --> src/ordered.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) enum TautomerExpansionError<E> {
[INFO] [stdout]    |                 ---------------------- variant in this enum
[INFO] [stdout] 63 |     #[error("tautomer candidate {canonical_smiles:?} has no kekulized branch")]
[INFO] [stdout] 64 |     MissingKekulizedBranch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TautomerExpansionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `empty` and `new` are never used
[INFO] [stdout]    --> src/ordered.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 443 | impl<M> TautomerCandidate<M> {
[INFO] [stdout]     | ---------------------------- associated functions in this implementation
[INFO] [stdout] 444 |     fn empty() -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connectivity_smarts` is never read
[INFO] [stdout]   --> src/score.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TautomerScoreTerm {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     connectivity_smarts: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TautomerScoreTerm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 29s
[INFO] running `Command { std: "docker" "inspect" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling cosmolkit-model v0.5.1-rc.3
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling cosmolkit-core v0.5.1-rc.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling cosmolkit-cx v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-smiles v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-search v0.5.1-rc.3
[INFO] [stderr]    Compiling cosmolkit-tautomer v0.5.1-rc.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `kekulized` is never used
[INFO] [stdout]    --> src/engine.rs:170:15
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub(crate) fn kekulized(candidate: &TautomerRecord) -> Result<TautomerRecord, TautomerRunError> {
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MissingKekulizedBranch` is never constructed
[INFO] [stdout]   --> src/ordered.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) enum TautomerExpansionError<E> {
[INFO] [stdout]    |                 ---------------------- variant in this enum
[INFO] [stdout] 63 |     #[error("tautomer candidate {canonical_smiles:?} has no kekulized branch")]
[INFO] [stdout] 64 |     MissingKekulizedBranch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TautomerExpansionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `empty` and `new` are never used
[INFO] [stdout]    --> src/ordered.rs:444:8
[INFO] [stdout]     |
[INFO] [stdout] 443 | impl<M> TautomerCandidate<M> {
[INFO] [stdout]     | ---------------------------- associated functions in this implementation
[INFO] [stdout] 444 |     fn empty() -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connectivity_smarts` is never read
[INFO] [stdout]   --> src/score.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TautomerScoreTerm {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     connectivity_smarts: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TautomerScoreTerm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:660:13
[INFO] [stdout]     |
[INFO] [stdout] 660 |         let mut molecule = fixture("CCC").expect("parse propane");
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:698:13
[INFO] [stdout]     |
[INFO] [stdout] 698 |         let mut molecule =
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:722:13
[INFO] [stdout]     |
[INFO] [stdout] 722 |         let mut molecule = fixture("CCO").expect("parse ethanol");
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:744:13
[INFO] [stdout]     |
[INFO] [stdout] 744 |         let mut molecule = fixture("CCO").expect("parse ethanol");
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:773:17
[INFO] [stdout]     |
[INFO] [stdout] 773 |             let mut molecule = fixture(smiles).expect("parse heteroatom");
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:800:17
[INFO] [stdout]     |
[INFO] [stdout] 800 |             let mut molecule = fixture(smiles).expect("parse charged heteroatom");
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/score.rs:812:17
[INFO] [stdout]     |
[INFO] [stdout] 812 |             let mut molecule = fixture(smiles).expect("parse excluded element");
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MissingKekulizedBranch` is never constructed
[INFO] [stdout]   --> src/ordered.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub(crate) enum TautomerExpansionError<E> {
[INFO] [stdout]    |                 ---------------------- variant in this enum
[INFO] [stdout] 63 |     #[error("tautomer candidate {canonical_smiles:?} has no kekulized branch")]
[INFO] [stdout] 64 |     MissingKekulizedBranch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TautomerExpansionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/stereo_tests.rs:235:5
[INFO] [stdout]     |
[INFO] [stdout] 235 |     source.topology.atoms[0].clear_prop("_CIPCode");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let _ = source.topology.atoms[0].clear_prop("_CIPCode");
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 41s
[INFO] running `Command { std: "docker" "inspect" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: function `kekulized` is never used
[INFO] [stderr]    --> src/engine.rs:170:15
[INFO] [stderr]     |
[INFO] [stderr] 170 | pub(crate) fn kekulized(candidate: &TautomerRecord) -> Result<TautomerRecord, TautomerRunError> {
[INFO] [stderr]     |               ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variant `MissingKekulizedBranch` is never constructed
[INFO] [stderr]   --> src/ordered.rs:64:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub(crate) enum TautomerExpansionError<E> {
[INFO] [stderr]    |                 ---------------------- variant in this enum
[INFO] [stderr] 63 |     #[error("tautomer candidate {canonical_smiles:?} has no kekulized branch")]
[INFO] [stderr] 64 |     MissingKekulizedBranch {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TautomerExpansionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `empty` and `new` are never used
[INFO] [stderr]    --> src/ordered.rs:444:8
[INFO] [stderr]     |
[INFO] [stderr] 443 | impl<M> TautomerCandidate<M> {
[INFO] [stderr]     | ---------------------------- associated functions in this implementation
[INFO] [stderr] 444 |     fn empty() -> Self {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 455 |     fn new(
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `connectivity_smarts` is never read
[INFO] [stderr]   --> src/score.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct TautomerScoreTerm {
[INFO] [stderr]    |            ----------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 16 |     connectivity_smarts: String,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TautomerScoreTerm` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `cosmolkit-tautomer` (lib) generated 4 warnings
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:660:13
[INFO] [stderr]     |
[INFO] [stderr] 660 |         let mut molecule = fixture("CCC").expect("parse propane");
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:698:13
[INFO] [stderr]     |
[INFO] [stderr] 698 |         let mut molecule =
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:722:13
[INFO] [stderr]     |
[INFO] [stderr] 722 |         let mut molecule = fixture("CCO").expect("parse ethanol");
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:744:13
[INFO] [stderr]     |
[INFO] [stderr] 744 |         let mut molecule = fixture("CCO").expect("parse ethanol");
[INFO] [stderr]     |             ----^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:773:17
[INFO] [stderr]     |
[INFO] [stderr] 773 |             let mut molecule = fixture(smiles).expect("parse heteroatom");
[INFO] [stderr]     |                 ----^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:800:17
[INFO] [stderr]     |
[INFO] [stderr] 800 |             let mut molecule = fixture(smiles).expect("parse charged heteroatom");
[INFO] [stderr]     |                 ----^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/score.rs:812:17
[INFO] [stderr]     |
[INFO] [stderr] 812 |             let mut molecule = fixture(smiles).expect("parse excluded element");
[INFO] [stderr]     |                 ----^^^^^^^^
[INFO] [stderr]     |                 |
[INFO] [stderr]     |                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `MissingKekulizedBranch` is never constructed
[INFO] [stderr]   --> src/ordered.rs:64:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub(crate) enum TautomerExpansionError<E> {
[INFO] [stderr]    |                 ---------------------- variant in this enum
[INFO] [stderr] 63 |     #[error("tautomer candidate {canonical_smiles:?} has no kekulized branch")]
[INFO] [stderr] 64 |     MissingKekulizedBranch {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `TautomerExpansionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/stereo_tests.rs:235:5
[INFO] [stderr]     |
[INFO] [stderr] 235 |     source.topology.atoms[0].clear_prop("_CIPCode");
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 235 |     let _ = source.topology.atoms[0].clear_prop("_CIPCode");
[INFO] [stderr]     |     +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `cosmolkit-tautomer` (lib test) generated 9 warnings (run `cargo fix --lib -p cosmolkit-tautomer --tests` to apply 7 suggestions)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/cosmolkit-tautomer/e75f314684ff38c9/out/cosmolkit_tautomer-e75f314684ff38c9)
[INFO] [stdout] 
[INFO] [stdout] running 102 tests
[INFO] [stdout] test engine::application_tests::single_transform_application_propagates_non_kekulize_sanitize_failures ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_catches_only_the_kekulize_failure_branch ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_handles_explicit_implicit_and_isotopic_hydrogens ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_applies_source_ordered_charge_deltas ... ok
[INFO] [stdout] test engine::search04_lazy_tests::search04_empty_transform_catalog_never_requests_kekule_branch ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_uses_match_endpoint_order_and_unions_modified_sets ... ok
[INFO] [stdout] test engine::search04_lazy_tests::search04_lazy_failed_copy_is_published_then_reused_without_retry ... ok
[INFO] [stdout] test engine::search04_lazy_tests::search04_lazy_success_is_materialized_once_and_reused ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_reports_duplicate_after_stereo_and_before_product_kekulization ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_records_bonds_changed_only_by_sanitization ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_rejects_invalid_mappings_without_mutating_inputs ... ok
[INFO] [stdout] test engine::stereo_tests::prepared_tautomer_queries_preserve_sparse_nonring_suffix ... ok
[INFO] [stdout] test engine::application_tests::quickcopy_discards_molecule_computed_list_but_preserves_atom_clear_errors ... ok
[INFO] [stdout] test engine::stereo_tests::search05_invalid_source_clears_directions_and_preserves_modified_return_quirk ... ok
[INFO] [stdout] test engine::stereo_tests::cip_restoration_uses_source_string_projection ... ok
[INFO] [stdout] test engine::stereo_tests::search05_invalid_source_ring_and_ring_connector_use_none_acyclic_uses_any ... ok
[INFO] [stdout] test engine::stereo_tests::ring_detection_retains_source_fast_ring_update_without_stereo_reassignment ... ok
[INFO] [stdout] test engine::stereo_tests::source_without_stereo_atom_pair_clears_candidate_pair_and_marks_any ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_executes_every_option_combination_without_source_mutation ... ok
[INFO] [stdout] test engine::stereo_tests::search05_sparse_atom_set_preserves_unmodified_chiral_rows ... ok
[INFO] [stdout] test engine::stereo_tests::single_query_endpoint_transfers_hydrogen_in_source_order ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_preservation_restores_bond_stereo_atoms_and_dirs ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_reassignment_reapplies_any_contract ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_remove_or_zero_total_h_clear_tracked_isotopes ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_ring_and_non_double_bonds_use_none ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_sp2_and_remove_sp3_clear_chiral_and_cip_state ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_non_ring_double_bond_removal_sets_any_and_clears_dirs ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_and_isotopic_hydrogens_sp3_restore_copies_source_tag_and_present_cip_only ... ok
[INFO] [stdout] test engine::search04_registered_detached_tests::search04_public_detached_enumeration_keeps_failed_cache_before_propagation ... ok
[INFO] [stdout] test engine::stereo_tests::stereo_cleanup_retains_recalculated_hydrogens_for_subsequent_query_matching ... ok
[INFO] [stdout] test engine::search04_lazy_tests::search04_product_is_lazy_and_quickcopy_drops_only_molecule_metadata ... ok
[INFO] [stdout] test engine::stereo_tests::source_property_failure_cip_guard_retains_prefix_and_absent_branch ... ok
[INFO] [stdout] test engine::stereo_tests::unknown_ring_double_stereo_is_preserved_without_controllers ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_is_independent_of_input_atom_order ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_inserts_one_unfinished_candidate_in_key_order ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_reports_invalid_aromatic_input_as_a_structured_error ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_canonical_kekulizes_aromatic_input_without_clearing_flags ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_never_mutates_the_input ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_updates_only_missing_valence_and_symm_sssr_caches ... ok
[INFO] [stdout] test enumeration::initialization_tests::enumeration_initialization_handles_empty_and_disconnected_inputs ... ok
[INFO] [stdout] test enumeration::recovery_search06_domain_source_loan_tests::protected_property_presence_blocks_every_matched_atom_only ... ok
[INFO] [stdout] test enumeration::recovery_search06_domain_source_loan_tests::recovery_search06_domain_empty_catalog_keeps_actual_source_cold ... ok
[INFO] [stdout] test enumeration::recovery_search06_domain_source_loan_tests::recovery_search06_domain_canonical_callback_error_keeps_actual_source_cache ... ok
[INFO] [stdout] test enumeration::recovery_search06_domain_source_loan_tests::recovery_search06_domain_no_score_callback_does_not_eagerly_warm_source ... ok
[INFO] [stdout] test enumeration::search06_default_picker_tests::search06_default_picker_mutates_each_actual_candidate_cache ... ok
[INFO] [stdout] test enumeration::search04_metadata_tests::search04_canonical_initial_selection_appends_without_clearing_existing_conformers ... ok
[INFO] [stdout] test enumeration::search06_default_picker_tests::search06_single_default_candidate_skips_score_and_cache_write ... ok
[INFO] [stdout] test enumeration::search04_metadata_tests::search04_canonical_restores_quickcopy_properties_and_ordered_conformers ... ok
[INFO] [stdout] test ordered::tests::candidate_record_clone_and_state_transitions_are_independent ... ok
[INFO] [stdout] test enumeration::search06_default_picker_tests::canonical_score_ties_prefer_specified_stereo_before_lexical_order ... ok
[INFO] [stdout] test ordered::tests::candidate_record_default_constructor_has_source_empty_state ... ok
[INFO] [stdout] test ordered::tests::candidate_record_explicit_constructor_preserves_values_and_initial_state ... ok
[INFO] [stdout] test ordered::tests::candidate_record_ordered_map_sorts_keys_and_replaces_one_canonical_key ... ok
[INFO] [stdout] test enumeration::recovery_search06_domain_source_loan_tests::recovery_search06_domain_enumeration_callback_error_keeps_actual_source_cache ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_counts_one_transform_for_multiple_and_duplicate_matches ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_skips_done_candidates_and_marks_later_keys_done_after_bailout ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_tautomer_limits_are_checked_before_callback_and_each_match ... ok
[INFO] [stdout] test ordered::tests::enumeration_pruning_collapses_duplicates_and_corrects_only_tautomer_limit_status ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_visits_later_insertions_in_pass_and_defers_earlier_insertions ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_zero_and_exact_transform_limits_use_source_increment_order ... ok
[INFO] [stdout] test ordered::tests::enumeration_pruning_rekeys_only_when_stereo_changes_and_tracks_completion ... ok
[INFO] [stdout] test ordered::tests::enumeration_pruning_reproduces_source_rekey_iterator_order ... ok
[INFO] [stdout] test ordered::tests::enumeration_result_rejects_an_unmaterialized_candidate ... ok
[INFO] [stdout] test score::recovery_search06_cache_tests::recovery_search06_exclusive_loan_keeps_all_non_cache_blocks ... ok
[INFO] [stdout] test score::search03_tests::search03_default_prerequisites_and_equality_keep_source_order ... ok
[INFO] [stdout] test ordered::tests::enumeration_byte_keys_preserve_nul_and_opaque_unsigned_order ... ok
[INFO] [stdout] test score::recovery_search06_cache_tests::recovery_search06_ring_loan_cold_fast_warm_actual_cache ... ok
[INFO] [stdout] test score::search03_tests::search03_invalid_connectivity_retains_term_but_element_filter_runs_first ... ok
[INFO] [stdout] test ordered::tests::enumeration_pruning_materializes_final_candidates_in_key_order ... ok
[INFO] [stdout] test ordered::tests::enumeration_pruning_reapplies_after_modified_sets_grow_across_rounds ... ok
[INFO] [stdout] test score::search03_tests::search03_input_prefilter_retains_aromatic_connectivity_quirk ... ok
[INFO] [stdout] test ordered::tests::enumeration_expansion_callback_observes_preapplication_state_and_cancels_deterministically ... ok
[INFO] [stdout] test score::search03_tests::search03_real_canonical_default_constructs_once_custom_never_constructs ... ok
[INFO] [stdout] test score::tests::aggregate_score_counts_bracket_explicit_but_not_neighbor_isotopic_hydrogen ... ok
[INFO] [stdout] test score::search03_tests::search03_specialized_predicates_use_attributes_without_invented_gates ... ok
[INFO] [stdout] test score::tests::aggregate_score_counts_hydrogens_on_charged_penalized_atoms ... ok
[INFO] [stdout] test score::tests::aggregate_score_reports_missing_valence_only_when_a_penalized_atom_needs_it ... ok
[INFO] [stdout] test score::tests::aggregate_score_exposes_exact_components_and_signed_sum ... ok
[INFO] [stdout] test score::tests::aggregate_score_penalizes_implicit_hydrogens_on_each_source_element ... ok
[INFO] [stdout] test score::tests::aggregate_score_excludes_hydrogen_bearing_elements_outside_the_source_set ... ok
[INFO] [stdout] test score::tests::ring_score_adds_both_aromatic_and_all_carbon_weights ... ok
[INFO] [stdout] test score::tests::ring_score_counts_an_aromatic_heteroring_without_the_all_carbon_bonus ... ok
[INFO] [stdout] test score::tests::ring_score_keeps_topology_and_retains_source_symm_cache ... ok
[INFO] [stdout] test score::tests::ring_score_matches_with_or_without_a_precomputed_symm_sssr_cache ... ok
[INFO] [stdout] test score::tests::aggregate_score_default_delegate_uses_the_single_builtin_term_table ... ok
[INFO] [stdout] test engine::stereo_tests::search05_modified_source_double_validity_and_controller_width_matrix ... ok
[INFO] [stdout] test score::tests::ring_score_ignores_nonaromatic_rings ... ok
[INFO] [stdout] test score::tests::ring_score_is_zero_without_rings ... ok
[INFO] [stdout] test score::tests::ring_score_traverses_every_symmetrized_fused_ring ... ok
[INFO] [stdout] test score::tests::score_terms_invalid_smarts_keep_metadata_and_an_empty_matcher ... ok
[INFO] [stdout] test score::tests::score_terms_match_all_twelve_source_rows_in_order ... ok
[INFO] [stdout] test score::search03_tests::search03_numeric_index_dispatch_is_uncapped_and_keeps_generic_count_cap ... ok
[INFO] [stdout] test score::tests::substructure_score_counts_distinct_overlapping_matches ... ok
[INFO] [stdout] test score::tests::substructure_score_is_zero_when_no_term_matches ... ok
[INFO] [stdout] test score::tests::substructure_score_retains_source_int_accumulation_boundaries ... ok
[INFO] [stdout] test score::tests::substructure_score_skips_invalid_matchers_without_dropping_other_terms ... ok
[INFO] [stdout] test score::tests::score_terms_compile_the_default_table_only_once ... ok
[INFO] [stdout] test score::tests::score_terms_equality_uses_only_source_metadata ... ok
[INFO] [stdout] test score::tests::substructure_score_accumulates_custom_positive_and_negative_terms_in_source_order ... ok
[INFO] [stdout] test score::tests::substructure_score_counts_one_and_multiple_matches ... ok
[INFO] [stdout] test engine::application_tests::single_transform_application_reproduces_every_builtin_bond_edit_shape ... ok
[INFO] [stdout] test score::tests::substructure_score_evaluates_every_builtin_term_with_shared_match_semantics ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 102 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/migration_tau_catalog.rs (/opt/rustwide/target/release/build/cosmolkit-tautomer/d6a5f9489091972e/out/migration_tau_catalog-d6a5f9489091972e)
[INFO] [stdout] 
[INFO] [stdout] running 52 tests
[INFO] [stdout] test catalog_object_clone_and_clone_from_have_independent_value_semantics ... ok
[INFO] [stdout] test catalog_object_deserialization_is_a_structured_upstream_boundary ... ok
[INFO] [stdout] test catalog_reader_embedded_definitions_use_the_same_constructor ... ok
[INFO] [stdout] test builtin_catalogs_current_contains_every_compiled_source_row_in_order ... ok
[INFO] [stdout] test builtin_catalogs_v1_contains_every_compiled_source_row_in_order ... ok
[INFO] [stdout] test catalog_reader_reads_stream_comments_blank_lines_and_early_eof ... ok
[INFO] [stdout] test catalog_reader_rejects_non_utf8_catalog_data ... ok
[INFO] [stdout] test catalog_reader_file_entry_preserves_source_order ... ok
[INFO] [stdout] test catalog_reader_missing_file_returns_structured_io_error ... ok
[INFO] [stdout] test catalog_reader_zero_limit_reads_nothing ... ok
[INFO] [stdout] test catalog_reader_stream_failure_returns_structured_io_error ... ok
[INFO] [stdout] test catalog_reader_source_line_limit_sets_fail_state_after_truncated_line ... ok
[INFO] [stdout] test catalog_reader_bounded_stream_counts_only_emitted_transforms ... ok
[INFO] [stdout] test catalog_object_constructs_from_file_data_and_v1_sources ... ok
[INFO] [stdout] test catalog_tokens_accept_empty_bond_and_charge_fields ... ok
[INFO] [stdout] test catalog_object_indexing_returns_an_independent_value_and_checks_bounds ... ok
[INFO] [stdout] test catalog_stream_deserialization_is_source_unimplemented_and_does_not_consume ... ok
[INFO] [stdout] test catalog_tokens_bond_parser_ignores_whitespace_and_unknown_bytes ... ok
[INFO] [stdout] test catalog_object_serialization_is_exactly_count_and_newline ... ok
[INFO] [stdout] test catalog_tokens_charge_parser_rejects_whitespace ... ok
[INFO] [stdout] test direct_tuple_fields_keep_spaces_and_source_name_metadata ... ok
[INFO] [stdout] test empty_definition_array_is_an_empty_catalog ... ok
[INFO] [stdout] test catalog_tokens_charge_parser_returns_at_first_invalid_byte ... ok
[INFO] [stdout] test catalog_tokens_map_every_source_bond_symbol_in_order ... ok
[INFO] [stdout] test count_stream_write_propagates_io_error ... ok
[INFO] [stdout] test exactly_511_payload_with_newline_continues_to_next_line ... ok
[INFO] [stdout] test catalog_tokens_charge_parser_rejects_invalid_ascii_and_non_ascii_bytes ... ok
[INFO] [stdout] test catalog_tokens_map_every_source_charge_symbol_in_order ... ok
[INFO] [stdout] test overlong_line_parses_truncated_prefix_and_leaves_unread_suffix ... ok
[INFO] [stdout] test source_c_string_nul_truncates_parse_but_consumes_full_physical_line ... ok
[INFO] [stdout] test stream_error_retains_the_original_io_cause ... ok
[INFO] [stdout] test exactly_511_payload_at_eof_terminates_without_extra_transform ... ok
[INFO] [stdout] test transform_construction_preserves_name_query_and_source_ordered_edits ... ok
[INFO] [stdout] test transform_keeps_and_reuses_the_compiled_query_value ... ok
[INFO] [stdout] test transform_lines_collapse_omitted_optional_tab_columns_like_boost_tokenizer ... ok
[INFO] [stdout] test transform_lines_do_not_treat_indented_slashes_as_a_comment ... ok
[INFO] [stdout] test transform_accepts_empty_bond_and_charge_edit_vectors ... ok
[INFO] [stdout] test transform_lines_parse_three_columns_and_remove_ascii_spaces ... ok
[INFO] [stdout] test transform_clone_from_replaces_every_source_owned_field ... ok
[INFO] [stdout] test catalog_tokens_charge_parser_does_not_accept_signed_integer_spellings ... ok
[INFO] [stdout] test transform_lines_over_four_columns_store_the_source_empty_transform ... ok
[INFO] [stdout] test transform_accepts_source_empty_and_single_atom_queries ... ok
[INFO] [stdout] test transform_lines_parse_four_columns_in_source_order ... ok
[INFO] [stdout] test transform_clone_has_independent_value_semantics ... ok
[INFO] [stdout] test transform_lines_report_invalid_charge_symbols_before_smarts_parsing ... ok
[INFO] [stdout] test transform_lines_parse_two_columns_with_source_defaults ... ok
[INFO] [stdout] test catalog_object_empty_default_and_empty_file_current_are_distinct ... ok
[INFO] [stdout] test transform_stores_non_aligned_source_bond_edits ... ok
[INFO] [stdout] test transform_stores_non_aligned_source_charge_edits ... ok
[INFO] [stdout] test transform_lines_report_malformed_smarts_with_the_source_text ... ok
[INFO] [stdout] test transform_lines_skip_empty_comment_and_too_short_lines ... ok
[INFO] [stdout] test zero_stream_limit_does_not_observe_unread_io_failure ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 52 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests cosmolkit_tautomer
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd", kill_on_drop: false }`
[INFO] [stdout] 3dd228b15159ef5cd3e7242dbc336f1d200e0b43b041a69035a87618a67f21fd
