[INFO] cloning repository https://github.com/Esuol/rust_utils
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Esuol/rust_utils" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEsuol%2Frust_utils", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEsuol%2Frust_utils'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 80f437557bcc914dfe73d742a35503a07a3df73c
[INFO] checking Esuol/rust_utils against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FEsuol%2Frust_utils" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Esuol/rust_utils
[INFO] finished tweaking git repo https://github.com/Esuol/rust_utils
[INFO] tweaked toml for git repo https://github.com/Esuol/rust_utils written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Esuol/rust_utils on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Esuol/rust_utils already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded nom_locate v4.2.0
[INFO] [stderr]   Downloaded clap_builder v4.5.18
[INFO] [stderr]   Downloaded is-terminal v0.4.13
[INFO] [stderr]   Downloaded insta v1.40.0
[INFO] [stderr]   Downloaded winnow v0.6.22
[INFO] [stderr]   Downloaded similar v2.6.0
[INFO] [stderr]   Downloaded clap v4.5.18
[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:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a
[INFO] running `Command { std: "docker" "start" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a", 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" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a", 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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.210
[INFO] [stderr]    Compiling libc v0.2.158
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling serde_json v1.0.128
[INFO] [stderr]    Compiling thiserror v1.0.64
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.86
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking half v2.4.1
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]     Checking clap_builder v4.5.18
[INFO] [stderr]     Checking regex-automata v0.4.7
[INFO] [stderr]    Compiling rustix v0.38.37
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking oorandom v11.1.4
[INFO] [stderr]     Checking bitflags v2.6.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking fastrand v2.1.1
[INFO] [stderr]     Checking bytecount v0.6.8
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking similar v2.6.0
[INFO] [stderr]     Checking zig v0.1.0 (/opt/rustwide/workdir/zig)
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking assembly-line v0.1.0 (/opt/rustwide/workdir/exercises/assembly-line)
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]     Checking is-terminal v0.4.13
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking console v0.15.8
[INFO] [stderr]    Compiling syn v2.0.77
[INFO] [stderr]     Checking insta v1.40.0
[INFO] [stderr]     Checking clap v4.5.18
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking regex v1.10.6
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking nom_locate v4.2.0
[INFO] [stderr]     Checking tempfile v3.12.0
[INFO] [stderr]    Compiling serde_derive v1.0.210
[INFO] [stderr]    Compiling thiserror-impl v1.0.64
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking unescaper v0.1.5
[INFO] [stderr]     Checking filter-parser v0.1.0 (/opt/rustwide/workdir/filter-parser)
[INFO] [stderr]     Checking imagebuffer v0.1.0 (/opt/rustwide/workdir/imagebuffer)
[INFO] [stdout] error[E0107]: struct takes 0 lifetime arguments but 1 lifetime argument was supplied
[INFO] [stdout]  --> filter-parser/src/lib.rs:7:53
[INFO] [stdout]   |
[INFO] [stdout] 7 | type IResult<'a, Ret> = nom::IResult<Span<'a>, Ret, Error<'a>>;
[INFO] [stdout]   |                                                     ^^^^^---- help: remove the unnecessary generics
[INFO] [stdout]   |                                                     |
[INFO] [stdout]   |                                                     expected 0 lifetime arguments
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0107`.
[INFO] [stdout] 
[INFO] [stdout] error[E0107]: struct takes 0 lifetime arguments but 1 lifetime argument was supplied
[INFO] [stdout]  --> filter-parser/src/lib.rs:7:53
[INFO] [stdout]   |
[INFO] [stdout] 7 | type IResult<'a, Ret> = nom::IResult<Span<'a>, Ret, Error<'a>>;
[INFO] [stdout]   |                                                     ^^^^^---- help: remove the unnecessary generics
[INFO] [stdout]   |                                                     |
[INFO] [stdout]   |                                                     expected 0 lifetime arguments
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `filter-parser` (lib) due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0106]: missing lifetime specifiers
[INFO] [stdout]    --> imagebuffer/src/zip.rs:217:55
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn zip_slices<T, U>(a: &[T], b: &[U]) -> Vec<(&T, &U)> {
[INFO] [stdout]     |                                ----     ----          ^   ^ expected named lifetime parameter
[INFO] [stdout]     |                                                       |
[INFO] [stdout]     |                                                       expected named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `a` or `b`
[INFO] [stdout] help: consider introducing a named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn zip_slices<'a, T, U>(a: &'a [T], b: &'a [U]) -> Vec<(&'a T, &'a U)> {
[INFO] [stdout]     |                       +++           ++          ++               ++     ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0106]: missing lifetime specifier
[INFO] [stdout]    --> imagebuffer/src/zip.rs:223:59
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub fn zip_slices_many<T>(slices: &[&[T]]) -> Vec<Vec<&T>> {
[INFO] [stdout]     |                                       -------             ^ expected named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: this function's return type contains a borrowed value, but the signature does not say which one of `slices`'s 2 lifetimes it is borrowed from
[INFO] [stdout] help: consider introducing a named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub fn zip_slices_many<'a, T>(slices: &'a [&'a [T]]) -> Vec<Vec<&'a T>> {
[INFO] [stdout]     |                            +++             ++   ++                   ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0107`.
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:28
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |                            ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:310:32
[INFO] [stdout]     |
[INFO] [stdout] 310 | impl<T, E> FromResidual<Result<!, E>> for Result<T, E> {
[INFO] [stdout]     |                                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:312:39
[INFO] [stdout]     |
[INFO] [stdout] 312 |     fn from_residual(residual: Result<!, E>) -> Self {
[INFO] [stdout]     |                                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SoftBufferError`
[INFO] [stdout]  --> imagebuffer/src/test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::error::SoftBufferError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> imagebuffer/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod test;
[INFO] [stdout]   | ^^^^^^^^^
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `HashSet`
[INFO] [stdout]  --> imagebuffer/src/test.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> imagebuffer/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | mod test;
[INFO] [stdout]   | ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> imagebuffer/src/tree.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SoftBufferError`
[INFO] [stdout]  --> imagebuffer/src/zip.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::error::SoftBufferError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zip as StdZip`
[INFO] [stdout]  --> imagebuffer/src/zip.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::iter::{Iterator, Zip as StdZip};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::InitError`
[INFO] [stdout]  --> imagebuffer/src/lib.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use error::InitError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `filter-parser` (lib test) due to 1 previous error
[INFO] [stdout] error[E0106]: missing lifetime specifiers
[INFO] [stdout]    --> imagebuffer/src/zip.rs:217:55
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn zip_slices<T, U>(a: &[T], b: &[U]) -> Vec<(&T, &U)> {
[INFO] [stdout]     |                                ----     ----          ^   ^ expected named lifetime parameter
[INFO] [stdout]     |                                                       |
[INFO] [stdout]     |                                                       expected named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `a` or `b`
[INFO] [stdout] help: consider introducing a named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn zip_slices<'a, T, U>(a: &'a [T], b: &'a [U]) -> Vec<(&'a T, &'a U)> {
[INFO] [stdout]     |                       +++           ++          ++               ++     ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0106]: missing lifetime specifier
[INFO] [stdout]    --> imagebuffer/src/zip.rs:223:59
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub fn zip_slices_many<T>(slices: &[&[T]]) -> Vec<Vec<&T>> {
[INFO] [stdout]     |                                       -------             ^ expected named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout]     = help: this function's return type contains a borrowed value, but the signature does not say which one of `slices`'s 2 lifetimes it is borrowed from
[INFO] [stdout] help: consider introducing a named lifetime parameter
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub fn zip_slices_many<'a, T>(slices: &'a [&'a [T]]) -> Vec<Vec<&'a T>> {
[INFO] [stdout]     |                            +++             ++   ++                   ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:28
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |                            ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:310:32
[INFO] [stdout]     |
[INFO] [stdout] 310 | impl<T, E> FromResidual<Result<!, E>> for Result<T, E> {
[INFO] [stdout]     |                                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: the `!` type is experimental
[INFO] [stdout]    --> imagebuffer/src/result.rs:312:39
[INFO] [stdout]     |
[INFO] [stdout] 312 |     fn from_residual(residual: Result<!, E>) -> Self {
[INFO] [stdout]     |                                       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #35121 <https://github.com/rust-lang/rust/issues/35121> for more information
[INFO] [stdout]     = help: add `#![feature(never_type)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SoftBufferError`
[INFO] [stdout]  --> imagebuffer/src/test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::error::SoftBufferError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashMap` and `HashSet`
[INFO] [stdout]  --> imagebuffer/src/test.rs:3:24
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> imagebuffer/src/result.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::{ControlFlow, FromResidual, Try};
[INFO] [stdout]   |                             ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> imagebuffer/src/tree.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> imagebuffer/src/result.rs:3:43
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::{ControlFlow, FromResidual, Try};
[INFO] [stdout]   |                                           ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SoftBufferError`
[INFO] [stdout]  --> imagebuffer/src/zip.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::error::SoftBufferError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 |     type Output = T;
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:5
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Zip as StdZip`
[INFO] [stdout]  --> imagebuffer/src/zip.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::iter::{Iterator, Zip as StdZip};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:297:5
[INFO] [stdout]     |
[INFO] [stdout] 297 |     fn from_output(output: Self::Output) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error::InitError`
[INFO] [stdout]  --> imagebuffer/src/lib.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use error::InitError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:5
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:292:12
[INFO] [stdout]     |
[INFO] [stdout] 292 | impl<T, E> Try for Result<T, E> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:312:5
[INFO] [stdout]     |
[INFO] [stdout] 312 |     fn from_residual(residual: Result<!, E>) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 310 | impl<T, E> FromResidual<Result<!, E>> for Result<T, E> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0220]: associated type `Item` not found for `I`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |     default: Vec<I::Item>,
[INFO] [stdout]     |                     ^^^^ associated type `Item` not found
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> imagebuffer/src/result.rs:3:29
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::{ControlFlow, FromResidual, Try};
[INFO] [stdout]   |                             ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]  --> imagebuffer/src/result.rs:3:43
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::{ControlFlow, FromResidual, Try};
[INFO] [stdout]   |                                           ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]   = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]   = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 |     type Output = T;
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:5
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:297:5
[INFO] [stdout]     |
[INFO] [stdout] 297 |     fn from_output(output: Self::Output) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:5
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:292:12
[INFO] [stdout]     |
[INFO] [stdout] 292 | impl<T, E> Try for Result<T, E> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:312:5
[INFO] [stdout]     |
[INFO] [stdout] 312 |     fn from_residual(residual: Result<!, E>) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 310 | impl<T, E> FromResidual<Result<!, E>> for Result<T, E> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0220]: associated type `Item` not found for `I`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |     default: Vec<I::Item>,
[INFO] [stdout]     |                     ^^^^ associated type `Item` not found
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:297:28
[INFO] [stdout]     |
[INFO] [stdout] 297 |     fn from_output(output: Self::Output) -> Self {
[INFO] [stdout]     |                            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:36
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:52
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:297:28
[INFO] [stdout]     |
[INFO] [stdout] 297 |     fn from_output(output: Self::Output) -> Self {
[INFO] [stdout]     |                            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:36
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0658]: use of unstable library feature `try_trait_v2`
[INFO] [stdout]    --> imagebuffer/src/result.rs:302:52
[INFO] [stdout]     |
[INFO] [stdout] 302 |     fn branch(self) -> ControlFlow<Self::Residual, Self::Output> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: see issue #84277 <https://github.com/rust-lang/rust/issues/84277> for more information
[INFO] [stdout]     = help: add `#![feature(try_trait_v2)]` to the crate attributes to enable
[INFO] [stdout]     = note: this compiler was built on 2026-07-25; consider upgrading it if it is out of date
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `result::Result<!, E>: Residual<T>` is not satisfied
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:21
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the nightly-only, unstable trait `Residual<T>` is not implemented for `result::Result<!, E>`
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `Residual<O>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:2901:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Option<Infallible>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:2208:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Infallible, E>`
[INFO] [stdout] note: required by a bound in `std::ops::Try::Residual`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/ops/try_trait.rs:160:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `result::Result<!, E>: Residual<T>` is not satisfied
[INFO] [stdout]    --> imagebuffer/src/result.rs:294:21
[INFO] [stdout]     |
[INFO] [stdout] 294 |     type Residual = Result<!, E>;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the nightly-only, unstable trait `Residual<T>` is not implemented for `result::Result<!, E>`
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the following other types implement trait `Residual<O>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:2901:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Option<Infallible>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:2208:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Infallible, E>`
[INFO] [stdout] note: required by a bound in `std::ops::Try::Residual`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/ops/try_trait.rs:160:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0310]: the parameter type `F` may not live long enough
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:9
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         the parameter type `F` must be valid for the static lifetime...
[INFO] [stdout]     |         ...so that the type `F` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding an explicit lifetime bound
[INFO] [stdout]     |
[INFO] [stdout] 308 |         F: FnMut(T::Item, U::Item) -> V + 'static,
[INFO] [stdout]     |                                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0310]: the parameter type `F` may not live long enough
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:9
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         the parameter type `F` must be valid for the static lifetime...
[INFO] [stdout]     |         ...so that the type `F` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding an explicit lifetime bound
[INFO] [stdout]     |
[INFO] [stdout] 308 |         F: FnMut(T::Item, U::Item) -> V + 'static,
[INFO] [stdout]     |                                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0373]: closure may outlive the current function, but it borrows `f`, which is owned by the current function
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:46
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |                                              ^^^^^^^^ - `f` is borrowed here
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              may outlive borrowed value `f`
[INFO] [stdout]     |
[INFO] [stdout] note: function requires argument type to outlive `'static`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:9
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: to force the closure to take ownership of `f` (and any other referenced variables), use the `move` keyword
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(move |(a, b)| f(a, b))
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:55
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |                                                       ^ cannot borrow as mutable
[INFO] [stdout]     |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn zip_with<T, U, V, F>(a: T, b: U, mut f: F) -> impl Iterator<Item = V>
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0373]: closure may outlive the current function, but it borrows `f`, which is owned by the current function
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:46
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |                                              ^^^^^^^^ - `f` is borrowed here
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              may outlive borrowed value `f`
[INFO] [stdout]     |
[INFO] [stdout] note: function requires argument type to outlive `'static`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:9
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: to force the closure to take ownership of `f` (and any other referenced variables), use the `move` keyword
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(move |(a, b)| f(a, b))
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0596]: cannot borrow `f` as mutable, as it is not declared as mutable
[INFO] [stdout]    --> imagebuffer/src/zip.rs:310:55
[INFO] [stdout]     |
[INFO] [stdout] 310 |         a.into_iter().zip(b.into_iter()).map(|(a, b)| f(a, b))
[INFO] [stdout]     |                                                       ^ cannot borrow as mutable
[INFO] [stdout]     |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub fn zip_with<T, U, V, F>(a: T, b: U, mut f: F) -> impl Iterator<Item = V>
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0592]: duplicate definitions with name `ok`
[INFO] [stdout]   --> imagebuffer/src/result.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub const fn ok(value: T) -> Self {
[INFO] [stdout]    |     --------------------------------- other definition for `ok`
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn ok(self) -> Option<T> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0592]: duplicate definitions with name `err`
[INFO] [stdout]   --> imagebuffer/src/result.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub const fn err(error: E) -> Self {
[INFO] [stdout]    |     ---------------------------------- other definition for `err`
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn err(self) -> Option<E> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0592]: duplicate definitions with name `ok`
[INFO] [stdout]   --> imagebuffer/src/result.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub const fn ok(value: T) -> Self {
[INFO] [stdout]    |     --------------------------------- other definition for `ok`
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn ok(self) -> Option<T> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0592]: duplicate definitions with name `err`
[INFO] [stdout]   --> imagebuffer/src/result.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub const fn err(error: E) -> Self {
[INFO] [stdout]    |     ---------------------------------- other definition for `err`
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn err(self) -> Option<E> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:117:53
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Self::Err(e) => panic!("{}: {:?}", msg, e),
[INFO] [stdout]     |                                         ----        ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T, E: std::fmt::Debug> Result<T, E> {
[INFO] [stdout]     |          +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:117:53
[INFO] [stdout]     |
[INFO] [stdout] 117 |             Self::Err(e) => panic!("{}: {:?}", msg, e),
[INFO] [stdout]     |                                         ----        ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T, E: std::fmt::Debug> Result<T, E> {
[INFO] [stdout]     |          +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:131:89
[INFO] [stdout]     |
[INFO] [stdout] 131 |             Self::Err(e) => panic!("called `Result::unwrap()` on an `Err` value: {:?}", e),
[INFO] [stdout]     |                                                                                  ----   ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                                                  |
[INFO] [stdout]     |                                                                                  required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T, E: std::fmt::Debug> Result<T, E> {
[INFO] [stdout]     |          +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:131:89
[INFO] [stdout]     |
[INFO] [stdout] 131 |             Self::Err(e) => panic!("called `Result::unwrap()` on an `Err` value: {:?}", e),
[INFO] [stdout]     |                                                                                  ----   ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                                                  |
[INFO] [stdout]     |                                                                                  required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T, E: std::fmt::Debug> Result<T, E> {
[INFO] [stdout]     |          +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:144:91
[INFO] [stdout]     |
[INFO] [stdout] 144 |             Self::Ok(t) => panic!("called `Result::unwrap_err()` on an `Ok` value: {:?}", t),
[INFO] [stdout]     |                                                                                    ----   ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                                                    |
[INFO] [stdout]     |                                                                                    required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T: std::fmt::Debug, E> Result<T, E> {
[INFO] [stdout]     |       +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:144:91
[INFO] [stdout]     |
[INFO] [stdout] 144 |             Self::Ok(t) => panic!("called `Result::unwrap_err()` on an `Ok` value: {:?}", t),
[INFO] [stdout]     |                                                                                    ----   ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                                                    |
[INFO] [stdout]     |                                                                                    required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl<T: std::fmt::Debug, E> Result<T, E> {
[INFO] [stdout]     |       +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:231:52
[INFO] [stdout]     |
[INFO] [stdout] 231 |             Self::Ok(t) => panic!("{}: {:?}", msg, t),
[INFO] [stdout]     |                                        ----        ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 220 |     E: fmt::Debug, T: std::fmt::Debug
[INFO] [stdout]     |                    ++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:268:17
[INFO] [stdout]     |
[INFO] [stdout] 267 |                 "called `Result::unwrap_cloned()` on an `Err` value: {:?}",
[INFO] [stdout]     |                                                                      ---- required by this formatting parameter
[INFO] [stdout] 268 |                 e
[INFO] [stdout]     |                 ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 254 |     E: Clone + std::fmt::Debug,
[INFO] [stdout]     |              +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:231:52
[INFO] [stdout]     |
[INFO] [stdout] 231 |             Self::Ok(t) => panic!("{}: {:?}", msg, t),
[INFO] [stdout]     |                                        ----        ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 220 |     E: fmt::Debug, T: std::fmt::Debug
[INFO] [stdout]     |                    ++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:284:17
[INFO] [stdout]     |
[INFO] [stdout] 283 |                 "called `Result::unwrap_err_cloned()` on an `Ok` value: {:?}",
[INFO] [stdout]     |                                                                         ---- required by this formatting parameter
[INFO] [stdout] 284 |                 t
[INFO] [stdout]     |                 ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 253 |     T: Clone + std::fmt::Debug,
[INFO] [stdout]     |              +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `E` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:268:17
[INFO] [stdout]     |
[INFO] [stdout] 267 |                 "called `Result::unwrap_cloned()` on an `Err` value: {:?}",
[INFO] [stdout]     |                                                                      ---- required by this formatting parameter
[INFO] [stdout] 268 |                 e
[INFO] [stdout]     |                 ^ `E` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `E` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 254 |     E: Clone + std::fmt::Debug,
[INFO] [stdout]     |              +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/result.rs:284:17
[INFO] [stdout]     |
[INFO] [stdout] 283 |                 "called `Result::unwrap_err_cloned()` on an `Ok` value: {:?}",
[INFO] [stdout]     |                                                                         ---- required by this formatting parameter
[INFO] [stdout] 284 |                 t
[INFO] [stdout]     |                 ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |
[INFO] [stdout] help: consider further restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 253 |     T: Clone + std::fmt::Debug,
[INFO] [stdout]     |              +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/test.rs:399:79
[INFO] [stdout]     |
[INFO] [stdout] 399 |             Some(t) => TestResult::failed(format!("{}: {:?}", message.into(), t)),
[INFO] [stdout]     |                                                        ----                   ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                        |
[INFO] [stdout]     |                                                        required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `&T` to implement `Debug`
[INFO] [stdout] help: consider restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 396 |     pub fn assert_none<T: std::fmt::Debug>(option: &Option<T>, message: impl Into<String>) -> TestResult {
[INFO] [stdout]     |                         +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `T` doesn't implement `Debug`
[INFO] [stdout]    --> imagebuffer/src/test.rs:399:79
[INFO] [stdout]     |
[INFO] [stdout] 399 |             Some(t) => TestResult::failed(format!("{}: {:?}", message.into(), t)),
[INFO] [stdout]     |                                                        ----                   ^ `T` cannot be formatted using `{:?}` because it doesn't implement `Debug`
[INFO] [stdout]     |                                                        |
[INFO] [stdout]     |                                                        required by this formatting parameter
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `&T` to implement `Debug`
[INFO] [stdout] help: consider restricting type parameter `T` with trait `Debug`
[INFO] [stdout]     |
[INFO] [stdout] 396 |     pub fn assert_none<T: std::fmt::Debug>(option: &Option<T>, message: impl Into<String>) -> TestResult {
[INFO] [stdout]     |                         +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> imagebuffer/src/test.rs:547:41
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len..=max_len);
[INFO] [stdout]     |                                         -------^^^-------
[INFO] [stdout]     |                                         |         |
[INFO] [stdout]     |                                         |         expected `i32`, found `usize`
[INFO] [stdout]     |                                         expected `i32`, found `usize`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/ops/range.rs:395:17
[INFO] [stdout] help: you can convert a `usize` to an `i32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len.try_into().unwrap()..=max_len);
[INFO] [stdout]     |                                                ++++++++++++++++++++
[INFO] [stdout] help: you can convert a `usize` to an `i32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len..=max_len.try_into().unwrap());
[INFO] [stdout]     |                                                          ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> imagebuffer/src/test.rs:547:41
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len..=max_len);
[INFO] [stdout]     |                                         -------^^^-------
[INFO] [stdout]     |                                         |         |
[INFO] [stdout]     |                                         |         expected `i32`, found `usize`
[INFO] [stdout]     |                                         expected `i32`, found `usize`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/ops/range.rs:395:17
[INFO] [stdout] help: you can convert a `usize` to an `i32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len.try_into().unwrap()..=max_len);
[INFO] [stdout]     |                                                ++++++++++++++++++++
[INFO] [stdout] help: you can convert a `usize` to an `i32` and panic if the converted value doesn't fit
[INFO] [stdout]     |
[INFO] [stdout] 547 |                 let len = rng.gen_range(min_len..=max_len.try_into().unwrap());
[INFO] [stdout]     |                                                          ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/test.rs:549:50
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     .map(|_| chars[rng.gen_range(0..chars.len())])
[INFO] [stdout]     |                                        --------- ^^^^^^^^^^^^^^ expected `RangeInclusive<i32>`, found `Range<usize>`
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `std::ops::RangeInclusive<i32>`
[INFO] [stdout]                found struct `std::ops::Range<usize>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> imagebuffer/src/test.rs:597:8
[INFO] [stdout]     |
[INFO] [stdout] 597 |     fn gen_range(&mut self, range: std::ops::RangeInclusive<i32>) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^            ------------------------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the type `[char]` cannot be indexed by `i32`
[INFO] [stdout]    --> imagebuffer/src/test.rs:549:36
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     .map(|_| chars[rng.gen_range(0..chars.len())])
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SliceIndex<[char]>` is not implemented for `i32`
[INFO] [stdout] help: `usize` implements trait `SliceIndex<T>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/bstr/traits.rs:197:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SliceIndex<ByteStr>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/slice/index.rs:179:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SliceIndex<[T]>`
[INFO] [stdout]     = note: required for `Vec<char>` to implement `Index<i32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/test.rs:549:50
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     .map(|_| chars[rng.gen_range(0..chars.len())])
[INFO] [stdout]     |                                        --------- ^^^^^^^^^^^^^^ expected `RangeInclusive<i32>`, found `Range<usize>`
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `std::ops::RangeInclusive<i32>`
[INFO] [stdout]                found struct `std::ops::Range<usize>`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> imagebuffer/src/test.rs:597:8
[INFO] [stdout]     |
[INFO] [stdout] 597 |     fn gen_range(&mut self, range: std::ops::RangeInclusive<i32>) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^            ------------------------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the type `[char]` cannot be indexed by `i32`
[INFO] [stdout]    --> imagebuffer/src/test.rs:549:36
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     .map(|_| chars[rng.gen_range(0..chars.len())])
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SliceIndex<[char]>` is not implemented for `i32`
[INFO] [stdout] help: `usize` implements trait `SliceIndex<T>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/bstr/traits.rs:197:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SliceIndex<ByteStr>`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/slice/index.rs:179:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SliceIndex<[T]>`
[INFO] [stdout]     = note: required for `Vec<char>` to implement `Index<i32>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> imagebuffer/src/test.rs:702:42
[INFO] [stdout]     |
[INFO] [stdout] 702 |         assert!(Assertions::assert_empty(&[], "should pass").is_passed());
[INFO] [stdout]     |                                          ^^^ cannot infer type for type parameter `T` declared on the associated function `assert_empty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/tree.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |       pub fn get_root(&self) -> Result<&TreeNode<T>> {
[INFO] [stdout]     |                                 -------------------- expected `result::Result<&TreeNode<T>>` because of return type
[INFO] [stdout] 182 | /         self.root
[INFO] [stdout] 183 | |             .as_ref()
[INFO] [stdout] 184 | |             .ok_or_else(|| SoftBufferError::PlatformError(Some("Tree is empty".to_string()), None))
[INFO] [stdout]     | |___________________________________________________________________________________________________^ expected `Result<&TreeNode<T>>`, found `Result<&TreeNode<T>, SoftBufferError>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Result<&TreeNode<T>, SoftBufferError>` and `result::Result<&TreeNode<T>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `Result<&TreeNode<T>, SoftBufferError>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<&TreeNode<T>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<&TreeNode<T>, SoftBufferError>` into `result::Result<&TreeNode<T>>`
[INFO] [stdout]     |
[INFO] [stdout] 184 |             .ok_or_else(|| SoftBufferError::PlatformError(Some("Tree is empty".to_string()), None)).into()
[INFO] [stdout]     |                                                                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `Option<_>`
[INFO] [stdout]   --> imagebuffer/src/zip.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut max_size = None;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |                 (Some(a), Some(b)) => Some(a.min(b)),
[INFO] [stdout]    |                                            - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `max_size` an explicit type, where the placeholder `_` is specified
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut max_size: Option<T> = None;
[INFO] [stdout]    |                         +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/tree.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |       pub fn get_root(&self) -> Result<&TreeNode<T>> {
[INFO] [stdout]     |                                 -------------------- expected `result::Result<&tree::TreeNode<T>>` because of return type
[INFO] [stdout] 182 | /         self.root
[INFO] [stdout] 183 | |             .as_ref()
[INFO] [stdout] 184 | |             .ok_or_else(|| SoftBufferError::PlatformError(Some("Tree is empty".to_string()), None))
[INFO] [stdout]     | |___________________________________________________________________________________________________^ expected `Result<&TreeNode<T>>`, found `Result<&TreeNode<T>, SoftBufferError>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Result<&TreeNode<T>, SoftBufferError>` and `result::Result<&tree::TreeNode<T>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `Result<&TreeNode<T>, SoftBufferError>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<&tree::TreeNode<T>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<&tree::TreeNode<T>, error::SoftBufferError>` into `result::Result<&tree::TreeNode<T>>`
[INFO] [stdout]     |
[INFO] [stdout] 184 |             .ok_or_else(|| SoftBufferError::PlatformError(Some("Tree is empty".to_string()), None)).into()
[INFO] [stdout]     |                                                                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `clone` found for type parameter `T` in the current scope
[INFO] [stdout]    --> imagebuffer/src/zip.rs:207:36
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn zip_vectors_many<T>(vectors: Vec<Vec<T>>) -> Vec<Vec<T>> {
[INFO] [stdout]     |                             - method `clone` not found for this type parameter
[INFO] [stdout] ...
[INFO] [stdout] 207 |                 row.push(vector[i].clone());
[INFO] [stdout]     |                                    ^^^^^ method not found in `T`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the type parameter is bounded by the trait
[INFO] [stdout] help: the following trait defines an item `clone`, perhaps you need to restrict type parameter `T` with it:
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn zip_vectors_many<T: Clone>(vectors: Vec<Vec<T>>) -> Vec<Vec<T>> {
[INFO] [stdout]     |                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed for `Option<_>`
[INFO] [stdout]   --> imagebuffer/src/zip.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut max_size = None;
[INFO] [stdout]    |             ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |                 (Some(a), Some(b)) => Some(a.min(b)),
[INFO] [stdout]    |                                            - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `max_size` an explicit type, where the placeholder `_` is specified
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut max_size: Option<T> = None;
[INFO] [stdout]    |                         +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub fn zip_hashmaps<K, V1, V2>(a: HashMap<K, V1>, b: HashMap<K, V2>) -> HashMap<K, (V1, V2)>
[INFO] [stdout]     |                                -- expected this type parameter              -------------------- expected `HashMap<K, (V1, V2)>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 269 |                 result.insert(key, (value1, value2.clone()));
[INFO] [stdout]     |                 ------             ------------------------ this argument has type `(V1, &V2)`...
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 ... which causes `result` to have type `HashMap<K, (V1, &V2)>`
[INFO] [stdout] ...
[INFO] [stdout] 272 |         result
[INFO] [stdout]     |         ^^^^^^ expected `HashMap<K, (V1, V2)>`, found `HashMap<K, (V1, &V2)>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `HashMap<_, (_, _)>`
[INFO] [stdout]                found struct `HashMap<_, (_, &_)>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: type mismatch resolving `<Vec<U> as IntoIterator>::Item == Self`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:346:26
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 338 |     fn zip_many<U>(
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 346 |         iterators.extend(others);
[INFO] [stdout]     |                   ------ ^^^^^^ expected type parameter `Self`, found type parameter `U`
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `Self`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: required by a bound in `extend`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/iter/traits/collect.rs:416:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:347:18
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- found this type parameter
[INFO] [stdout] ...
[INFO] [stdout] 347 |         Zip::new(iterators)
[INFO] [stdout]     |         -------- ^^^^^^^^^ expected `Vec<Chain<Once<Self>, IntoIter<U>>>`, found `Vec<Self>`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<std::iter::Chain<std::iter::Once<Self>, std::vec::IntoIter<U>>>`
[INFO] [stdout]                found struct `Vec<Self>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> imagebuffer/src/zip.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  19 |     pub fn new(iterators: Vec<I>) -> Self {
[INFO] [stdout]     |            ^^^ -----------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: expected `IntoIter<U>` to be an iterator that yields `Self`, but it yields `U`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:347:18
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 338 |     fn zip_many<U>(
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 347 |         Zip::new(iterators)
[INFO] [stdout]     |         -------- ^^^^^^^^^ expected type parameter `Self`, found type parameter `U`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `Self`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout]     = note: required for `std::iter::Chain<std::iter::Once<Self>, std::vec::IntoIter<U>>` to implement `Iterator`
[INFO] [stdout] note: required by a bound in `zip::Zip::<I>::new`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:15:8
[INFO] [stdout]     |
[INFO] [stdout]  15 |     I: Iterator,
[INFO] [stdout]     |        ^^^^^^^^ required by this bound in `Zip::<I>::new`
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn new(iterators: Vec<I>) -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:382:9
[INFO] [stdout]     |
[INFO] [stdout] 369 |       fn zip_with<U>(&self, other: &[U]) -> Result<Vec<(T, U)>>
[INFO] [stdout]     |                                             ------------------- expected `result::Result<Vec<(T, U)>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 382 | /         Ok(self
[INFO] [stdout] 383 | |             .iter()
[INFO] [stdout] 384 | |             .zip(other.iter())
[INFO] [stdout] 385 | |             .map(|(a, b)| (a.clone(), b.clone()))
[INFO] [stdout] 386 | |             .collect())
[INFO] [stdout]     | |_______________________^ expected `Result<Vec<(T, U)>>`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<_, _>` and `result::Result<Vec<(T, U)>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<_, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<(T, U)>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<_, _>` into `result::Result<Vec<(T, U)>>`
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .collect()).into()
[INFO] [stdout]     |                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `clone` found for type parameter `T` in the current scope
[INFO] [stdout]    --> imagebuffer/src/zip.rs:207:36
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn zip_vectors_many<T>(vectors: Vec<Vec<T>>) -> Vec<Vec<T>> {
[INFO] [stdout]     |                             - method `clone` not found for this type parameter
[INFO] [stdout] ...
[INFO] [stdout] 207 |                 row.push(vector[i].clone());
[INFO] [stdout]     |                                    ^^^^^ method not found in `T`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the type parameter is bounded by the trait
[INFO] [stdout] help: the following trait defines an item `clone`, perhaps you need to restrict type parameter `T` with it:
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub fn zip_vectors_many<T: Clone>(vectors: Vec<Vec<T>>) -> Vec<Vec<T>> {
[INFO] [stdout]     |                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:408:26
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl<T> CollectionZipExt<T> for Vec<T> {
[INFO] [stdout]     |      - expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 389 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 406 |             row.push(self[i].clone());
[INFO] [stdout]     |             ---      --------------- this argument has type `T`...
[INFO] [stdout]     |             |
[INFO] [stdout]     |             ... which causes `row` to have type `Vec<T>`
[INFO] [stdout] 407 |             for other in others {
[INFO] [stdout] 408 |                 row.push(other[i].clone());
[INFO] [stdout]     |                     ---- ^^^^^^^^^^^^^^^^ expected type parameter `T`, found type parameter `U`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `T`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/alloc/src/vec/mod.rs:1001:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:413:9
[INFO] [stdout]     |
[INFO] [stdout] 389 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                                               ------------------- expected `result::Result<Vec<Vec<T>>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 413 |         Ok(result)
[INFO] [stdout]     |         ^^^^^^^^^^ expected `Result<Vec<Vec<T>>>`, found `Result<Vec<Vec<T>>, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Vec<Vec<T>>, _>` and `result::Result<Vec<Vec<T>>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<Vec<Vec<T>>, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<Vec<T>>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<Vec<Vec<T>>, _>` into `result::Result<Vec<Vec<T>>>`
[INFO] [stdout]     |
[INFO] [stdout] 413 |         Ok(result).into()
[INFO] [stdout]     |                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:431:9
[INFO] [stdout]     |
[INFO] [stdout] 418 |       fn zip_with<U>(&self, other: &[U]) -> Result<Vec<(T, U)>>
[INFO] [stdout]     |                                             ------------------- expected `result::Result<Vec<(T, U)>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 431 | /         Ok(self
[INFO] [stdout] 432 | |             .iter()
[INFO] [stdout] 433 | |             .zip(other.iter())
[INFO] [stdout] 434 | |             .map(|(a, b)| (a.clone(), b.clone()))
[INFO] [stdout] 435 | |             .collect())
[INFO] [stdout]     | |_______________________^ expected `Result<Vec<(T, U)>>`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<_, _>` and `result::Result<Vec<(T, U)>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<_, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<(T, U)>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<_, _>` into `result::Result<Vec<(T, U)>>`
[INFO] [stdout]     |
[INFO] [stdout] 435 |             .collect()).into()
[INFO] [stdout]     |                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub fn zip_hashmaps<K, V1, V2>(a: HashMap<K, V1>, b: HashMap<K, V2>) -> HashMap<K, (V1, V2)>
[INFO] [stdout]     |                                -- expected this type parameter              -------------------- expected `std::collections::HashMap<K, (V1, V2)>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 269 |                 result.insert(key, (value1, value2.clone()));
[INFO] [stdout]     |                 ------             ------------------------ this argument has type `(V1, &V2)`...
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 ... which causes `result` to have type `std::collections::HashMap<K, (V1, &V2)>`
[INFO] [stdout] ...
[INFO] [stdout] 272 |         result
[INFO] [stdout]     |         ^^^^^^ expected `HashMap<K, (V1, V2)>`, found `HashMap<K, (V1, &V2)>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `HashMap<_, (_, _)>`
[INFO] [stdout]                found struct `HashMap<_, (_, &_)>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: type mismatch resolving `<Vec<U> as IntoIterator>::Item == Self`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:346:26
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 338 |     fn zip_many<U>(
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 346 |         iterators.extend(others);
[INFO] [stdout]     |                   ------ ^^^^^^ expected type parameter `Self`, found type parameter `U`
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `Self`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: required by a bound in `extend`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/iter/traits/collect.rs:416:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:457:26
[INFO] [stdout]     |
[INFO] [stdout] 417 | impl<T> CollectionZipExt<T> for [T] {
[INFO] [stdout]     |      - expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 438 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 455 |             row.push(self[i].clone());
[INFO] [stdout]     |             ---      --------------- this argument has type `T`...
[INFO] [stdout]     |             |
[INFO] [stdout]     |             ... which causes `row` to have type `Vec<T>`
[INFO] [stdout] 456 |             for other in others {
[INFO] [stdout] 457 |                 row.push(other[i].clone());
[INFO] [stdout]     |                     ---- ^^^^^^^^^^^^^^^^ expected type parameter `T`, found type parameter `U`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `T`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/alloc/src/vec/mod.rs:1001:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:347:18
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- found this type parameter
[INFO] [stdout] ...
[INFO] [stdout] 347 |         Zip::new(iterators)
[INFO] [stdout]     |         -------- ^^^^^^^^^ expected `Vec<Chain<Once<Self>, IntoIter<U>>>`, found `Vec<Self>`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Vec<std::iter::Chain<std::iter::Once<Self>, std::vec::IntoIter<U>>>`
[INFO] [stdout]                found struct `Vec<Self>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> imagebuffer/src/zip.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  19 |     pub fn new(iterators: Vec<I>) -> Self {
[INFO] [stdout]     |            ^^^ -----------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: expected `IntoIter<U>` to be an iterator that yields `Self`, but it yields `U`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:347:18
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub trait ZipExt: Iterator + Sized {
[INFO] [stdout]     | ---------------------------------- expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 338 |     fn zip_many<U>(
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 347 |         Zip::new(iterators)
[INFO] [stdout]     |         -------- ^^^^^^^^^ expected type parameter `Self`, found type parameter `U`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `Self`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout]     = note: required for `std::iter::Chain<std::iter::Once<Self>, std::vec::IntoIter<U>>` to implement `std::iter::Iterator`
[INFO] [stdout] note: required by a bound in `zip::Zip::<I>::new`
[INFO] [stdout]    --> imagebuffer/src/zip.rs:15:8
[INFO] [stdout]     |
[INFO] [stdout]  15 |     I: Iterator,
[INFO] [stdout]     |        ^^^^^^^^ required by this bound in `Zip::<I>::new`
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn new(iterators: Vec<I>) -> Self {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 438 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                                               ------------------- expected `result::Result<Vec<Vec<T>>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 462 |         Ok(result)
[INFO] [stdout]     |         ^^^^^^^^^^ expected `Result<Vec<Vec<T>>>`, found `Result<Vec<Vec<T>>, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Vec<Vec<T>>, _>` and `result::Result<Vec<Vec<T>>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<Vec<Vec<T>>, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<Vec<T>>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<Vec<Vec<T>>, _>` into `result::Result<Vec<Vec<T>>>`
[INFO] [stdout]     |
[INFO] [stdout] 462 |         Ok(result).into()
[INFO] [stdout]     |                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `imagebuffer` (lib) due to 49 previous errors; 8 warnings emitted
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:382:9
[INFO] [stdout]     |
[INFO] [stdout] 369 |       fn zip_with<U>(&self, other: &[U]) -> Result<Vec<(T, U)>>
[INFO] [stdout]     |                                             ------------------- expected `result::Result<Vec<(T, U)>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 382 | /         Ok(self
[INFO] [stdout] 383 | |             .iter()
[INFO] [stdout] 384 | |             .zip(other.iter())
[INFO] [stdout] 385 | |             .map(|(a, b)| (a.clone(), b.clone()))
[INFO] [stdout] 386 | |             .collect())
[INFO] [stdout]     | |_______________________^ expected `Result<Vec<(T, U)>>`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<_, _>` and `result::Result<Vec<(T, U)>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<_, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<(T, U)>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<_, _>` into `result::Result<Vec<(T, U)>>`
[INFO] [stdout]     |
[INFO] [stdout] 386 |             .collect()).into()
[INFO] [stdout]     |                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:408:26
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl<T> CollectionZipExt<T> for Vec<T> {
[INFO] [stdout]     |      - expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 389 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 406 |             row.push(self[i].clone());
[INFO] [stdout]     |             ---      --------------- this argument has type `T`...
[INFO] [stdout]     |             |
[INFO] [stdout]     |             ... which causes `row` to have type `Vec<T>`
[INFO] [stdout] 407 |             for other in others {
[INFO] [stdout] 408 |                 row.push(other[i].clone());
[INFO] [stdout]     |                     ---- ^^^^^^^^^^^^^^^^ expected type parameter `T`, found type parameter `U`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `T`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/alloc/src/vec/mod.rs:1001:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:413:9
[INFO] [stdout]     |
[INFO] [stdout] 389 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                                               ------------------- expected `result::Result<Vec<Vec<T>>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 413 |         Ok(result)
[INFO] [stdout]     |         ^^^^^^^^^^ expected `Result<Vec<Vec<T>>>`, found `Result<Vec<Vec<T>>, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Vec<Vec<T>>, _>` and `result::Result<Vec<Vec<T>>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<Vec<Vec<T>>, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<Vec<T>>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<Vec<Vec<T>>, _>` into `result::Result<Vec<Vec<T>>>`
[INFO] [stdout]     |
[INFO] [stdout] 413 |         Ok(result).into()
[INFO] [stdout]     |                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:431:9
[INFO] [stdout]     |
[INFO] [stdout] 418 |       fn zip_with<U>(&self, other: &[U]) -> Result<Vec<(T, U)>>
[INFO] [stdout]     |                                             ------------------- expected `result::Result<Vec<(T, U)>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 431 | /         Ok(self
[INFO] [stdout] 432 | |             .iter()
[INFO] [stdout] 433 | |             .zip(other.iter())
[INFO] [stdout] 434 | |             .map(|(a, b)| (a.clone(), b.clone()))
[INFO] [stdout] 435 | |             .collect())
[INFO] [stdout]     | |_______________________^ expected `Result<Vec<(T, U)>>`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<_, _>` and `result::Result<Vec<(T, U)>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<_, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<(T, U)>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<_, _>` into `result::Result<Vec<(T, U)>>`
[INFO] [stdout]     |
[INFO] [stdout] 435 |             .collect()).into()
[INFO] [stdout]     |                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:457:26
[INFO] [stdout]     |
[INFO] [stdout] 417 | impl<T> CollectionZipExt<T> for [T] {
[INFO] [stdout]     |      - expected type parameter
[INFO] [stdout] ...
[INFO] [stdout] 438 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                 - found type parameter
[INFO] [stdout] ...
[INFO] [stdout] 455 |             row.push(self[i].clone());
[INFO] [stdout]     |             ---      --------------- this argument has type `T`...
[INFO] [stdout]     |             |
[INFO] [stdout]     |             ... which causes `row` to have type `Vec<T>`
[INFO] [stdout] 456 |             for other in others {
[INFO] [stdout] 457 |                 row.push(other[i].clone());
[INFO] [stdout]     |                     ---- ^^^^^^^^^^^^^^^^ expected type parameter `T`, found type parameter `U`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type parameter `T`
[INFO] [stdout]                found type parameter `U`
[INFO] [stdout]     = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
[INFO] [stdout]     = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/alloc/src/vec/mod.rs:1001:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> imagebuffer/src/zip.rs:462:9
[INFO] [stdout]     |
[INFO] [stdout] 438 |     fn zip_many<U>(&self, others: &[&[U]]) -> Result<Vec<Vec<T>>>
[INFO] [stdout]     |                                               ------------------- expected `result::Result<Vec<Vec<T>>>` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 462 |         Ok(result)
[INFO] [stdout]     |         ^^^^^^^^^^ expected `Result<Vec<Vec<T>>>`, found `Result<Vec<Vec<T>>, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `std::result::Result<Vec<Vec<T>>, _>` and `result::Result<Vec<Vec<T>>>` have similar names, but are actually distinct types
[INFO] [stdout] note: `std::result::Result<Vec<Vec<T>>, _>` is defined in crate `core`
[INFO] [stdout]    --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/result.rs:557:0
[INFO] [stdout] note: `result::Result<Vec<Vec<T>>>` is defined in the current crate
[INFO] [stdout]    --> imagebuffer/src/result.rs:10:1
[INFO] [stdout]     |
[INFO] [stdout]  10 | pub enum Result<T, E = SoftBufferError> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: call `Into::into` on this expression to convert `std::result::Result<Vec<Vec<T>>, _>` into `result::Result<Vec<Vec<T>>>`
[INFO] [stdout]     |
[INFO] [stdout] 462 |         Ok(result).into()
[INFO] [stdout]     |                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `result`
[INFO] [stdout]    --> imagebuffer/src/test.rs:217:40
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let result = self.run_test(&test.name, test.test_fn);
[INFO] [stdout]     |                 ------ move occurs because `result` has type `TestResult`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 215 |             results.push((test.name, result));
[INFO] [stdout]     |                                      ------ value moved here
[INFO] [stdout] 216 |
[INFO] [stdout] 217 |             if self.stop_on_failure && result.is_failed() {
[INFO] [stdout]     |                                        ^^^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 215 |             results.push((test.name, result.clone()));
[INFO] [stdout]     |                                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_duration`
[INFO] [stdout]    --> imagebuffer/src/test.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let avg_duration = total_duration / iterations as u32;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `predicate`
[INFO] [stdout]    --> imagebuffer/src/tree.rs:115:45
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn find<F>(&self, predicate: F) -> Option<&TreeNode<T>>
[INFO] [stdout]     |                           --------- move occurs because `predicate` has type `F`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 114 |         for child in &self.children {
[INFO] [stdout]     |         --------------------------- inside of this loop
[INFO] [stdout] 115 |             if let Some(found) = child.find(predicate) {
[INFO] [stdout]     |                                             ^^^^^^^^^ value moved here, in previous iteration of loop
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing `predicate`
[INFO] [stdout]     |
[INFO] [stdout] 115 |             if let Some(found) = child.find(&predicate) {
[INFO] [stdout]     |                                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> imagebuffer/src/zip.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let mut result = std::array::from_fn(|i| {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0106, E0220, E0271, E0277, E0282, E0308, E0310, E0373, E0382...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0106`.
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `result`
[INFO] [stdout]    --> imagebuffer/src/test.rs:217:40
[INFO] [stdout]     |
[INFO] [stdout] 207 |             let result = self.run_test(&test.name, test.test_fn);
[INFO] [stdout]     |                 ------ move occurs because `result` has type `test::TestResult`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 215 |             results.push((test.name, result));
[INFO] [stdout]     |                                      ------ value moved here
[INFO] [stdout] 216 |
[INFO] [stdout] 217 |             if self.stop_on_failure && result.is_failed() {
[INFO] [stdout]     |                                        ^^^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 215 |             results.push((test.name, result.clone()));
[INFO] [stdout]     |                                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `avg_duration`
[INFO] [stdout]    --> imagebuffer/src/test.rs:634:13
[INFO] [stdout]     |
[INFO] [stdout] 634 |         let avg_duration = total_duration / iterations as u32;
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_avg_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `predicate`
[INFO] [stdout]    --> imagebuffer/src/tree.rs:115:45
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn find<F>(&self, predicate: F) -> Option<&TreeNode<T>>
[INFO] [stdout]     |                           --------- move occurs because `predicate` has type `F`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 114 |         for child in &self.children {
[INFO] [stdout]     |         --------------------------- inside of this loop
[INFO] [stdout] 115 |             if let Some(found) = child.find(predicate) {
[INFO] [stdout]     |                                             ^^^^^^^^^ value moved here, in previous iteration of loop
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing `predicate`
[INFO] [stdout]     |
[INFO] [stdout] 115 |             if let Some(found) = child.find(&predicate) {
[INFO] [stdout]     |                                             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> imagebuffer/src/zip.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let mut result = std::array::from_fn(|i| {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0106, E0220, E0271, E0277, E0282, E0308, E0310, E0373, E0382...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0106`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `imagebuffer` (lib test) due to 50 previous errors; 8 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a", kill_on_drop: false }`
[INFO] [stdout] 0723ff05f827e56c61b8da2b66290303394bfee9a55d49b9b1a9a057b72cb71a
