[INFO] fetching crate odds 0.4.0... [INFO] testing odds-0.4.0 against try#8de4c7234dd9b97c9d76b58671343fdbbc9a433e+target=x86_64-unknown-linux-musl for musl_upgrade_1_2_5_with_libc_patch_0 [INFO] extracting crate odds 0.4.0 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate odds 0.4.0 [INFO] finished tweaking crates.io crate odds 0.4.0 [INFO] tweaked toml for crates.io crate odds 0.4.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate odds 0.4.0 on toolchain 8de4c7234dd9b97c9d76b58671343fdbbc9a433e [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "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" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 23 packages to latest compatible versions [INFO] [stderr] Adding itertools v0.8.2 (available: v0.14.0) [INFO] [stderr] Adding quickcheck v0.9.2 (available: v1.0.3) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded rawslice v0.1.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9d3a116969699b2e502139ea158554bf3d6afec8a445d28e7ed49e0b67e5d2b0 [INFO] running `Command { std: "docker" "start" "-a" "9d3a116969699b2e502139ea158554bf3d6afec8a445d28e7ed49e0b67e5d2b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9d3a116969699b2e502139ea158554bf3d6afec8a445d28e7ed49e0b67e5d2b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d3a116969699b2e502139ea158554bf3d6afec8a445d28e7ed49e0b67e5d2b0", kill_on_drop: false }` [INFO] [stdout] 9d3a116969699b2e502139ea158554bf3d6afec8a445d28e7ed49e0b67e5d2b0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "build" "--frozen" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 8c4d0f60e6355cf5a16897c936a460bbe15ac5678feedbea8077a3fbe571905a [INFO] running `Command { std: "docker" "start" "-a" "8c4d0f60e6355cf5a16897c936a460bbe15ac5678feedbea8077a3fbe571905a", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling rawpointer v0.2.1 [INFO] [stderr] Compiling unchecked-index v0.2.2 [INFO] [stderr] Compiling rawslice v0.1.1 [INFO] [stderr] Compiling odds v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:31:19 [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:64:19 [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:163:20 [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:169:21 [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows; [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:173:20 [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:177:21 [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows { [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:106:21 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.29s [INFO] running `Command { std: "docker" "inspect" "8c4d0f60e6355cf5a16897c936a460bbe15ac5678feedbea8077a3fbe571905a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8c4d0f60e6355cf5a16897c936a460bbe15ac5678feedbea8077a3fbe571905a", kill_on_drop: false }` [INFO] [stdout] 8c4d0f60e6355cf5a16897c936a460bbe15ac5678feedbea8077a3fbe571905a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--no-run" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 09fc7271ea4d81b0795f853078a89f24ce44d7c06902f3e4a0ab02c93f71026b [INFO] running `Command { std: "docker" "start" "-a" "09fc7271ea4d81b0795f853078a89f24ce44d7c06902f3e4a0ab02c93f71026b", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling zerocopy v0.8.26 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:31:19 [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:64:19 [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:163:20 [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:169:21 [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows; [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:173:20 [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:177:21 [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows { [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:106:21 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling itertools v0.8.2 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling quickcheck v0.9.2 [INFO] [stderr] Compiling odds v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stdout] | --------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:255:17 [INFO] [stdout] | [INFO] [stdout] 255 | r#try!(write!(f, "[")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:260:21 [INFO] [stdout] | [INFO] [stdout] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/stride.rs:258:25 [INFO] [stdout] | [INFO] [stdout] 258 | r#try!(write!(f, ", ")); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stdout] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::slice_unchecked`: use `get_unchecked(begin..end)` instead [INFO] [stdout] --> tests/slice.rs:46:35 [INFO] [stdout] | [INFO] [stdout] 46 | ch_slice = self.slice.slice_unchecked(0, char_len); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `core::str::::slice_unchecked`: use `get_unchecked(begin..end)` instead [INFO] [stdout] --> tests/slice.rs:47:37 [INFO] [stdout] | [INFO] [stdout] 47 | self.slice = self.slice.slice_unchecked(char_len, self.slice.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CharSlices` is never constructed [INFO] [stdout] --> tests/slice.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct CharSlices<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CharSlices` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/slice.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl<'a> CharSlices<'a> [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 15 | { [INFO] [stdout] 16 | pub fn new(s: &'a str) -> Self [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:25:17 [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 25 | fn prefixes(&self) -> Prefixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes; [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 28 | fn suffixes(&self) -> Suffixes<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:31:19 [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 31 | fn substrings(&self) -> Substrings<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 56 | fn prefixes(&self) -> Prefixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes { [INFO] [stdout] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 60 | fn suffixes(&self) -> Suffixes<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:64:19 [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 64 | fn substrings(&self) -> Substrings<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:163:20 [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks; [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 163 | fn char_chunks(&self, n: usize) -> CharChunks<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:169:21 [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows; [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 169 | fn char_windows(&self, n: usize) -> CharWindows<'_>; [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:173:20 [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks { [INFO] [stdout] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 173 | fn char_chunks(&self, n: usize) -> CharChunks<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/string.rs:177:21 [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows { [INFO] [stdout] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 177 | fn char_windows(&self, n: usize) -> CharWindows<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:101:17 [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 101 | pub fn iter(&self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/slice/rev.rs:106:21 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 6.37s [INFO] running `Command { std: "docker" "inspect" "09fc7271ea4d81b0795f853078a89f24ce44d7c06902f3e4a0ab02c93f71026b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "09fc7271ea4d81b0795f853078a89f24ce44d7c06902f3e4a0ab02c93f71026b", kill_on_drop: false }` [INFO] [stdout] 09fc7271ea4d81b0795f853078a89f24ce44d7c06902f3e4a0ab02c93f71026b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 3cba56d23bf70775c2a6b70077f838323c4e3e4b1e55ca84023dc6274fba0ae3 [INFO] running `Command { std: "docker" "start" "-a" "3cba56d23bf70775c2a6b70077f838323c4e3e4b1e55ca84023dc6274fba0ae3", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024 [INFO] [stdout] [INFO] [stdout] running 18 tests [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | r#try!(write!(f, "[")); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stderr] | --------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:260:21 [INFO] [stderr] | [INFO] [stderr] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stderr] | --------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:258:25 [INFO] [stderr] | [INFO] [stderr] 258 | r#try!(write!(f, ", ")); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 268 | stride_impl!{struct Stride -> &'a [A], as_ptr, *const A, &'a A} [INFO] [stderr] | --------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:255:17 [INFO] [stderr] | [INFO] [stderr] 255 | r#try!(write!(f, "[")); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stderr] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:260:21 [INFO] [stderr] | [INFO] [stderr] 260 | r#try!(write!(f, "{:?}", (*self)[i])); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stderr] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stderr] --> src/stride.rs:258:25 [INFO] [stderr] | [INFO] [stderr] 258 | r#try!(write!(f, ", ")); [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 269 | stride_impl!{struct StrideMut -> &'a mut [A], as_mut_ptr, *mut A, &'a mut A} [INFO] [stderr] | ---------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `stride_impl` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:25:17 [INFO] [stderr] | [INFO] [stderr] 25 | fn prefixes(&self) -> Prefixes; [INFO] [stderr] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 25 | fn prefixes(&self) -> Prefixes<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:28:17 [INFO] [stderr] | [INFO] [stderr] 28 | fn suffixes(&self) -> Suffixes; [INFO] [stderr] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 28 | fn suffixes(&self) -> Suffixes<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:31:19 [INFO] [stderr] | [INFO] [stderr] 31 | fn substrings(&self) -> Substrings; [INFO] [stderr] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 31 | fn substrings(&self) -> Substrings<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:56:17 [INFO] [stderr] | [INFO] [stderr] 56 | fn prefixes(&self) -> Prefixes { [INFO] [stderr] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 56 | fn prefixes(&self) -> Prefixes<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | fn suffixes(&self) -> Suffixes { [INFO] [stderr] | ^^^^^ -------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 60 | fn suffixes(&self) -> Suffixes<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:64:19 [INFO] [stderr] | [INFO] [stderr] 64 | fn substrings(&self) -> Substrings { [INFO] [stderr] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 64 | fn substrings(&self) -> Substrings<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:163:20 [INFO] [stderr] | [INFO] [stderr] 163 | fn char_chunks(&self, n: usize) -> CharChunks; [INFO] [stderr] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 163 | fn char_chunks(&self, n: usize) -> CharChunks<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:169:21 [INFO] [stderr] | [INFO] [stderr] 169 | fn char_windows(&self, n: usize) -> CharWindows; [INFO] [stderr] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 169 | fn char_windows(&self, n: usize) -> CharWindows<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | fn char_chunks(&self, n: usize) -> CharChunks { [INFO] [stderr] | ^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 173 | fn char_chunks(&self, n: usize) -> CharChunks<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/string.rs:177:21 [INFO] [stderr] | [INFO] [stderr] 177 | fn char_windows(&self, n: usize) -> CharWindows { [INFO] [stderr] | ^^^^^ ----------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 177 | fn char_windows(&self, n: usize) -> CharWindows<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/slice/rev.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn iter(&self) -> Rev> { [INFO] [stderr] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 101 | pub fn iter(&self) -> Rev> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stderr] --> src/slice/rev.rs:106:21 [INFO] [stderr] | [INFO] [stderr] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stderr] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stderr] | | [INFO] [stderr] | this lifetime flows to the output [INFO] [stderr] | [INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stderr] | [INFO] [stderr] 106 | pub fn iter_mut(&mut self) -> Rev> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: `odds` (lib) generated 18 warnings (run `cargo fix --lib -p odds` to apply 12 suggestions) [INFO] [stderr] warning: use of deprecated method `core::str::::slice_unchecked`: use `get_unchecked(begin..end)` instead [INFO] [stderr] --> tests/slice.rs:46:35 [INFO] [stderr] | [INFO] [stderr] 46 | ch_slice = self.slice.slice_unchecked(0, char_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated method `core::str::::slice_unchecked`: use `get_unchecked(begin..end)` instead [INFO] [stderr] --> tests/slice.rs:47:37 [INFO] [stderr] | [INFO] [stderr] 47 | self.slice = self.slice.slice_unchecked(char_len, self.slice.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `CharSlices` is never constructed [INFO] [stderr] --> tests/slice.rs:9:8 [INFO] [stderr] | [INFO] [stderr] 9 | struct CharSlices<'a> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CharSlices` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> tests/slice.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 14 | impl<'a> CharSlices<'a> [INFO] [stderr] | ----------------------- associated function in this implementation [INFO] [stderr] 15 | { [INFO] [stderr] 16 | pub fn new(s: &'a str) -> Self [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: `odds` (test "slice") generated 4 warnings [INFO] [stderr] warning: `odds` (lib test) generated 18 warnings (18 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/odds-3f3a5b784702e805) [INFO] [stdout] test slice::blocked::test_blocked_index ... ok [INFO] [stdout] test slice::blocked::test_blocked ... ok [INFO] [stdout] test slice::rev::test_rev_slice_1 ... ok [INFO] [stdout] test slice::rev::test_rev_slice_find ... ok [INFO] [stdout] test slice::rev::test_rev_slice_hash ... ok [INFO] [stdout] test slice::rev::test_rev_slice_slice ... ok [INFO] [stdout] test string::test_char_str ... ok [INFO] [stdout] test string::test_slice ... ok [INFO] [stdout] test slice::test_find ... ok [INFO] [stdout] test test_repr ... ok [INFO] [stdout] test slice::rev::test_rev_slice_split ... ok [INFO] [stdout] test slice::unalign::test_unalign ... ok [INFO] [stdout] test string::str_windows ... ok [INFO] [stdout] test slice::blocked::test_blocked_index_oob - should panic ... ok [INFO] [stdout] test slice::rev::test_rev_slice_2 - should panic ... ok [INFO] [stdout] test slice::rev::test_rev_slice_3 - should panic ... ok [INFO] [stdout] test string::str_windows_not_0 - should panic ... ok [INFO] [stdout] test slice::test_shared_prefix ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running tests/quick.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/quick-e86c3aab6890d568) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test bit_count ... ok [INFO] [stdout] test find ... ok [INFO] [stdout] test rfind ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/slice.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/slice-7fa4cedd2edb7b35) [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] [stderr] Running tests/stride.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/stride-c0b859e3ec8150c1) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test mut_stride ... ok [INFO] [stdout] test from_stride_empty ... ok [INFO] [stdout] test mut_stride_compose ... ok [INFO] [stdout] test stride ... ok [INFO] [stdout] test stride_compose ... ok [INFO] [stdout] test stride_index ... ok [INFO] [stdout] test stride_uneven ... ok [INFO] [stdout] test stride_index_fail - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/tests.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/tests-3b49f119e9932933) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test prefixes ... ok [INFO] [stdout] test substrings ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "3cba56d23bf70775c2a6b70077f838323c4e3e4b1e55ca84023dc6274fba0ae3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3cba56d23bf70775c2a6b70077f838323c4e3e4b1e55ca84023dc6274fba0ae3", kill_on_drop: false }` [INFO] [stdout] 3cba56d23bf70775c2a6b70077f838323c4e3e4b1e55ca84023dc6274fba0ae3