[INFO] fetching crate rootfind 0.7.0...
[INFO] testing rootfind-0.7.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate rootfind 0.7.0 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate rootfind 0.7.0
[INFO] finished tweaking crates.io crate rootfind 0.7.0
[INFO] tweaked toml for crates.io crate rootfind 0.7.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rootfind 0.7.0 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `rootfind` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f
[INFO] running `Command { std: "docker" "start" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", 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" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f" "/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" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", 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" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `rootfind` (manifest) generated 1 warning
[INFO] [stderr]    Compiling rootfind v0.7.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/bracket.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<F> {
[INFO] [stdout]     |                   ^^ the lifetime is elided here           ^^^^^^^^^^^^^^^^^^^ 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]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<'_, F> {
[INFO] [stdout]     |                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.20s
[INFO] running `Command { std: "docker" "inspect" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", 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" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `rootfind` (manifest) generated 1 warning
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/bracket.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<F> {
[INFO] [stdout]     |                   ^^ the lifetime is elided here           ^^^^^^^^^^^^^^^^^^^ 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]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<'_, F> {
[INFO] [stdout]     |                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rootfind v0.7.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> tests/integration.rs:34:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |             format!("got={}, wanted={}", computed_root, expected_root)
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]    |
[INFO] [stdout] 34 -             format!("got={}, wanted={}", computed_root, expected_root)
[INFO] [stdout] 34 +             "got={}, wanted={}", computed_root, expected_root
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:215:26
[INFO] [stdout]     |
[INFO] [stdout] 215 |         Bounds::new(f64::NAN, -2.0);
[INFO] [stdout]     |                          ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NEG_INFINITY`: replaced by the `NEG_INFINITY` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:230:26
[INFO] [stdout]     |
[INFO] [stdout] 230 |         Bounds::new(f64::NEG_INFINITY, f64::INFINITY);
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::INFINITY`: replaced by the `INFINITY` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:230:45
[INFO] [stdout]     |
[INFO] [stdout] 230 |         Bounds::new(f64::NEG_INFINITY, f64::INFINITY);
[INFO] [stdout]     |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:245:34
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let b = Bounds::new(f64::MIN_POSITIVE / 20.0, f64::MIN_POSITIVE / 4.0);
[INFO] [stdout]     |                                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:245:60
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let b = Bounds::new(f64::MIN_POSITIVE / 20.0, f64::MIN_POSITIVE / 4.0);
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:256:34
[INFO] [stdout]     |
[INFO] [stdout] 256 |         let b = Bounds::new(f64::MIN, f64::MAX);
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:256:44
[INFO] [stdout]     |
[INFO] [stdout] 256 |         let b = Bounds::new(f64::MIN, f64::MAX);
[INFO] [stdout]     |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:260:22
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let v = f64::MIN_POSITIVE / 2.0;
[INFO] [stdout]     |                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:273:34
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let b = Bounds::new(f64::MAX, f64::MAX);
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:273:44
[INFO] [stdout]     |
[INFO] [stdout] 273 |         let b = Bounds::new(f64::MAX, f64::MAX);
[INFO] [stdout]     |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:274:37
[INFO] [stdout]     |
[INFO] [stdout] 274 |         assert_eq!(b.middle(), f64::MAX);
[INFO] [stdout]     |                                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:277:22
[INFO] [stdout]     |
[INFO] [stdout] 277 |         let v = f64::MIN_POSITIVE / 2.0;
[INFO] [stdout]     |                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:290:36
[INFO] [stdout]     |
[INFO] [stdout] 290 |         assert_eq!(b.contains(f64::NAN), false);
[INFO] [stdout]     |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:377:22
[INFO] [stdout]     |
[INFO] [stdout] 377 |         let a = f64::MAX / 2.;
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:378:22
[INFO] [stdout]     |
[INFO] [stdout] 378 |         let b = f64::MIN / 2.;
[INFO] [stdout]     |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:385:37
[INFO] [stdout]     |
[INFO] [stdout] 385 |         let _ = is_sign_change(f64::NAN, 1.0);
[INFO] [stdout]     |                                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/bracket.rs:391:42
[INFO] [stdout]     |
[INFO] [stdout] 391 |         let _ = is_sign_change(1.0, f64::NAN);
[INFO] [stdout]     |                                          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/convergence.rs:138:34
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let _ = DeltaX::new(f64::NAN);
[INFO] [stdout]     |                                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]    --> src/convergence.rs:159:38
[INFO] [stdout]     |
[INFO] [stdout] 159 |         let _ = FnResidual::new(f64::NAN);
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]     --> src/solver.rs:1038:41
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         let _ = newton_raphson(&f, f64::NAN, &conv, 100);
[INFO] [stdout]      |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stdout]     --> src/solver.rs:1070:40
[INFO] [stdout]      |
[INFO] [stdout] 1070 |         let _ = halley_method(&f, f64::NAN, &conv, 100);
[INFO] [stdout]      |                                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/solver.rs:326:16
[INFO] [stdout]     |
[INFO] [stdout] 326 |         f: Box<Fn(f64) -> f64>,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 326 |         f: Box<dyn Fn(f64) -> f64>,
[INFO] [stdout]     |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/solver.rs:327:17
[INFO] [stdout]     |
[INFO] [stdout] 327 |         df: Box<Fn(f64) -> f64>,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 327 |         df: Box<dyn Fn(f64) -> f64>,
[INFO] [stdout]     |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/solver.rs:328:18
[INFO] [stdout]     |
[INFO] [stdout] 328 |         d2f: Box<Fn(f64) -> f64>,
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 328 |         d2f: Box<dyn Fn(f64) -> f64>,
[INFO] [stdout]     |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/bracket.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<F> {
[INFO] [stdout]     |                   ^^ the lifetime is elided here           ^^^^^^^^^^^^^^^^^^^ 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]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<'_, F> {
[INFO] [stdout]     |                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/solver.rs:947:21
[INFO] [stdout]     |
[INFO] [stdout] 947 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 947 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout] 947 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/solver.rs:967:21
[INFO] [stdout]     |
[INFO] [stdout] 967 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 967 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout] 967 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/solver.rs:987:21
[INFO] [stdout]     |
[INFO] [stdout] 987 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 987 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout] 987 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]     --> src/solver.rs:1003:21
[INFO] [stdout]      |
[INFO] [stdout] 1003 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]      |
[INFO] [stdout] 1003 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stdout] 1003 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.00s
[INFO] running `Command { std: "docker" "inspect" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", 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" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `rootfind` (manifest) generated 1 warning
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/bracket.rs:115:19
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<F> {
[INFO] [stderr]     |                   ^^ the lifetime is elided here           ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub fn new(f: &F, bounds: Bounds, window_size: f64) -> BracketGenerator<'_, F> {
[INFO] [stderr]     |                                                                             +++
[INFO] [stderr] 
[INFO] [stderr] warning: `rootfind` (lib) generated 1 warning (run `cargo fix --lib -p rootfind` to apply 1 suggestion)
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]   --> tests/integration.rs:34:13
[INFO] [stderr]    |
[INFO] [stderr] 34 |             format!("got={}, wanted={}", computed_root, expected_root)
[INFO] [stderr]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]    = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]    |
[INFO] [stderr] 34 -             format!("got={}, wanted={}", computed_root, expected_root)
[INFO] [stderr] 34 +             "got={}, wanted={}", computed_root, expected_root
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `rootfind` (test "integration") generated 1 warning (run `cargo fix --test "integration" -p rootfind` to apply 1 suggestion)
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:215:26
[INFO] [stderr]     |
[INFO] [stderr] 215 |         Bounds::new(f64::NAN, -2.0);
[INFO] [stderr]     |                          ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NEG_INFINITY`: replaced by the `NEG_INFINITY` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:230:26
[INFO] [stderr]     |
[INFO] [stderr] 230 |         Bounds::new(f64::NEG_INFINITY, f64::INFINITY);
[INFO] [stderr]     |                          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::INFINITY`: replaced by the `INFINITY` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:230:45
[INFO] [stderr]     |
[INFO] [stderr] 230 |         Bounds::new(f64::NEG_INFINITY, f64::INFINITY);
[INFO] [stderr]     |                                             ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:245:34
[INFO] [stderr]     |
[INFO] [stderr] 245 |         let b = Bounds::new(f64::MIN_POSITIVE / 20.0, f64::MIN_POSITIVE / 4.0);
[INFO] [stderr]     |                                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:245:60
[INFO] [stderr]     |
[INFO] [stderr] 245 |         let b = Bounds::new(f64::MIN_POSITIVE / 20.0, f64::MIN_POSITIVE / 4.0);
[INFO] [stderr]     |                                                            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:256:34
[INFO] [stderr]     |
[INFO] [stderr] 256 |         let b = Bounds::new(f64::MIN, f64::MAX);
[INFO] [stderr]     |                                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:256:44
[INFO] [stderr]     |
[INFO] [stderr] 256 |         let b = Bounds::new(f64::MIN, f64::MAX);
[INFO] [stderr]     |                                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:260:22
[INFO] [stderr]     |
[INFO] [stderr] 260 |         let v = f64::MIN_POSITIVE / 2.0;
[INFO] [stderr]     |                      ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:273:34
[INFO] [stderr]     |
[INFO] [stderr] 273 |         let b = Bounds::new(f64::MAX, f64::MAX);
[INFO] [stderr]     |                                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:273:44
[INFO] [stderr]     |
[INFO] [stderr] 273 |         let b = Bounds::new(f64::MAX, f64::MAX);
[INFO] [stderr]     |                                            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:274:37
[INFO] [stderr]     |
[INFO] [stderr] 274 |         assert_eq!(b.middle(), f64::MAX);
[INFO] [stderr]     |                                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN_POSITIVE`: replaced by the `MIN_POSITIVE` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:277:22
[INFO] [stderr]     |
[INFO] [stderr] 277 |         let v = f64::MIN_POSITIVE / 2.0;
[INFO] [stderr]     |                      ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:290:36
[INFO] [stderr]     |
[INFO] [stderr] 290 |         assert_eq!(b.contains(f64::NAN), false);
[INFO] [stderr]     |                                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MAX`: replaced by the `MAX` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:377:22
[INFO] [stderr]     |
[INFO] [stderr] 377 |         let a = f64::MAX / 2.;
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::MIN`: replaced by the `MIN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:378:22
[INFO] [stderr]     |
[INFO] [stderr] 378 |         let b = f64::MIN / 2.;
[INFO] [stderr]     |                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:385:37
[INFO] [stderr]     |
[INFO] [stderr] 385 |         let _ = is_sign_change(f64::NAN, 1.0);
[INFO] [stderr]     |                                     ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/bracket.rs:391:42
[INFO] [stderr]     |
[INFO] [stderr] 391 |         let _ = is_sign_change(1.0, f64::NAN);
[INFO] [stderr]     |                                          ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/convergence.rs:138:34
[INFO] [stderr]     |
[INFO] [stderr] 138 |         let _ = DeltaX::new(f64::NAN);
[INFO] [stderr]     |                                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]    --> src/convergence.rs:159:38
[INFO] [stderr]     |
[INFO] [stderr] 159 |         let _ = FnResidual::new(f64::NAN);
[INFO] [stderr]     |                                      ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]     --> src/solver.rs:1038:41
[INFO] [stderr]      |
[INFO] [stderr] 1038 |         let _ = newton_raphson(&f, f64::NAN, &conv, 100);
[INFO] [stderr]      |                                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated constant `std::f64::NAN`: replaced by the `NAN` associated constant on `f64`
[INFO] [stderr]     --> src/solver.rs:1070:40
[INFO] [stderr]      |
[INFO] [stderr] 1070 |         let _ = halley_method(&f, f64::NAN, &conv, 100);
[INFO] [stderr]      |                                        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/solver.rs:326:16
[INFO] [stderr]     |
[INFO] [stderr] 326 |         f: Box<Fn(f64) -> f64>,
[INFO] [stderr]     |                ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]     = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 326 |         f: Box<dyn Fn(f64) -> f64>,
[INFO] [stderr]     |                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/solver.rs:327:17
[INFO] [stderr]     |
[INFO] [stderr] 327 |         df: Box<Fn(f64) -> f64>,
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 327 |         df: Box<dyn Fn(f64) -> f64>,
[INFO] [stderr]     |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/solver.rs:328:18
[INFO] [stderr]     |
[INFO] [stderr] 328 |         d2f: Box<Fn(f64) -> f64>,
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 328 |         d2f: Box<dyn Fn(f64) -> f64>,
[INFO] [stderr]     |                  +++
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/solver.rs:947:21
[INFO] [stderr]     |
[INFO] [stderr] 947 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 947 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr] 947 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/solver.rs:967:21
[INFO] [stderr]     |
[INFO] [stderr] 967 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 967 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr] 967 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/solver.rs:987:21
[INFO] [stderr]     |
[INFO] [stderr] 987 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]     |
[INFO] [stderr] 987 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr] 987 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]     --> src/solver.rs:1003:21
[INFO] [stderr]      |
[INFO] [stderr] 1003 |                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: this usage of `assert!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]      = note: the `assert!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stderr]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr] help: remove the `format!(..)` macro call
[INFO] [stderr]      |
[INFO] [stderr] 1003 -                     format!("{} root wanted={}, got={}", t.name, t.roots[i], root)
[INFO] [stderr] 1003 +                     "{} root wanted={}, got={}", t.name, t.roots[i], root
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: `rootfind` (lib test) generated 29 warnings (1 duplicate) (run `cargo fix --lib -p rootfind --tests` to apply 7 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/rootfind/9cc743c6c5eb0e96/out/rootfind-9cc743c6c5eb0e96)
[INFO] [stdout] 
[INFO] [stdout] running 42 tests
[INFO] [stdout] test bracket::tests::test_bounds_new_signed_zeros ... ok
[INFO] [stdout] test bracket::tests::test_bounds_contains ... ok
[INFO] [stdout] test bracket::tests::test_bounds_size ... ok
[INFO] [stdout] test bracket::tests::test_first_bracket_even_degree ... ok
[INFO] [stdout] test bracket::tests::test_is_sign_change ... ok
[INFO] [stdout] test bracket::tests::test_bounds_middle_offset ... ok
[INFO] [stdout] test bracket::tests::test_bounds_middle_symmetric ... ok
[INFO] [stdout] test bracket::tests::test_is_sign_change_overflow ... ok
[INFO] [stdout] test bracket::tests::test_first_bracket_hit ... ok
[INFO] [stdout] test bracket::tests::test_bounds_new_valid ... ok
[INFO] [stdout] test bracket::tests::test_bracket_generator_empty ... ok
[INFO] [stdout] test bracket::tests::test_bounds_middle_degenerate ... ok
[INFO] [stdout] test bracket::tests::test_bracket_generator_hits ... ok
[INFO] [stdout] test bracket::tests::test_is_sign_change_underflow ... ok
[INFO] [stdout] test bracket::tests::test_first_bracket_miss ... ok
[INFO] [stdout] test convergence::tests::test_dual_convergence ... ok
[INFO] [stdout] test convergence::tests::test_fn_residual_convergence ... ok
[INFO] [stdout] test solver::tests::test_bisection_centered_root ... ok
[INFO] [stdout] test convergence::tests::test_delta_x_convergence ... ok
[INFO] [stdout] test bracket::tests::test_bracket_generator_window_negative - should panic ... ok
[INFO] [stdout] test bracket::tests::test_first_bracket_negative_window - should panic ... ok
[INFO] [stdout] test bracket::tests::test_bounds_new_nan - should panic ... ok
[INFO] [stdout] test bracket::tests::test_bounds_new_infinite - should panic ... ok
[INFO] [stdout] test bracket::tests::test_first_bracket_zero_window - should panic ... ok
[INFO] [stdout] test bracket::tests::test_bounds_new_flipped_extents - should panic ... ok
[INFO] [stdout] test bracket::tests::test_is_sign_change_nan_lhs - should panic ... ok
[INFO] [stdout] test bracket::tests::test_is_sign_change_nan_rhs - should panic ... ok
[INFO] [stdout] test convergence::tests::test_delta_x_epsabs_nan - should panic ... ok
[INFO] [stdout] test convergence::tests::test_delta_x_epsabs_negative - should panic ... ok
[INFO] [stdout] test convergence::tests::test_fn_residual_epsabs_nan - should panic ... ok
[INFO] [stdout] test convergence::tests::test_fn_residual_epsabs_negative - should panic ... ok
[INFO] [stdout] test convergence::tests::test_delta_x_epsabs_zero - should panic ... ok
[INFO] [stdout] test solver::tests::test_bisection_no_straddle - should panic ... ok
[INFO] [stdout] test solver::tests::test_halley_nonfinite_start - should panic ... ok
[INFO] [stdout] test solver::tests::test_newton_nonfinite_start - should panic ... ok
[INFO] [stdout] test solver::tests::test_pathology_microstep ... ok
[INFO] [stdout] test solver::tests::test_pathology_flatlining ... ok
[INFO] [stdout] test solver::tests::test_newton_zero_derivative ... ok
[INFO] [stdout] test solver::tests::test_table_bisection ... ok
[INFO] [stdout] test solver::tests::test_table_illinois ... ok
[INFO] [stdout] test solver::tests::test_table_halley ... ok
[INFO] [stdout] test solver::tests::test_table_newton ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/debug/build/rootfind/3c239cc776d1f19f/out/integration-3c239cc776d1f19f)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test test_end_to_end ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stderr]    Doc-tests rootfind
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test src/wrap.rs - wrap (line 36) ... ok
[INFO] [stdout] test src/convergence.rs - convergence (line 16) ... ok
[INFO] [stdout] test src/wrap.rs - wrap (line 22) ... ok
[INFO] [stdout] test src/bracket.rs - bracket (line 25) ... ok
[INFO] [stdout] test src/solver.rs - solver (line 35) ... ok
[INFO] [stdout] test src/solver.rs - solver (line 12) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f", kill_on_drop: false }`
[INFO] [stdout] 8a187554ded54b77f51f89361ffa10415470320082cd945fee50cdc151bbfc9f
