[INFO] fetching crate rustorch 0.6.29...
[INFO] checking rustorch-0.6.29 against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] extracting crate rustorch 0.6.29 into /workspace/builds/worker-3-tc2/source
[INFO] removed /workspace/builds/worker-3-tc2/source/.cargo/config.toml
[INFO] started tweaking crates.io crate rustorch 0.6.29
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate rustorch 0.6.29
[INFO] tweaked toml for crates.io crate rustorch 0.6.29 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rustorch 0.6.29 on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rustorch 0.6.29 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" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:736:12
[INFO] [stderr]     |
[INFO] [stderr] 736 | homepage = "https://github.com/JunSuzukiJapan/rustorch"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 741 | repository = "https://github.com/JunSuzukiJapan/rustorch"
[INFO] [stderr]     |              --------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `rustorch` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb
[INFO] running `Command { std: "docker" "start" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb", 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" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb", 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" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:736:12
[INFO] [stderr]     |
[INFO] [stderr] 736 | homepage = "https://github.com/JunSuzukiJapan/rustorch"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 741 | repository = "https://github.com/JunSuzukiJapan/rustorch"
[INFO] [stderr]     |              --------------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `rustorch` (manifest) generated 1 warning
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.101
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling anyhow v1.0.99
[INFO] [stderr]    Compiling wasm-bindgen v0.2.101
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling rustorch v0.6.29 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking hostname v0.4.1
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking clap_builder v4.5.47
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking walkdir v2.5.0
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking indexmap v2.11.4
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking regex-automata v0.4.10
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking clap v4.5.47
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tempfile v3.21.0
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking ndarray v0.16.1
[INFO] [stderr]     Checking regex v1.11.2
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.101
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling rustorch-macros v0.6.29
[INFO] [stderr]    Compiling wasm-bindgen-test-macro v0.3.51
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.101
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.101
[INFO] [stderr]     Checking ndarray-rand v0.15.0
[INFO] [stderr]     Checking js-sys v0.3.78
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.51
[INFO] [stderr]     Checking wasm-bindgen-test v0.3.51
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:614:44
[INFO] [stdout]     |
[INFO] [stdout] 614 |             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 614 -             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout] 614 +             self.matmul(other).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 614 -             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout] 614 +             self.matmul(other).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:624:13
[INFO] [stdout]     |
[INFO] [stdout] 624 |           Err(crate::error::RusTorchError::tensor_op(
[INFO] [stdout]     |  _____________^
[INFO] [stdout] 625 | |             "GPU reduce not available without CUDA".to_string(),
[INFO] [stdout] 626 | |         )
[INFO] [stdout] 627 | |         .into())
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 626 -         )
[INFO] [stdout] 627 -         .into())
[INFO] [stdout] 626 +         ))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 624 ~         Err(<error::RusTorchError as Into<_>>::into(crate::error::RusTorchError::tensor_op(
[INFO] [stdout] 625 |             "GPU reduce not available without CUDA".to_string(),
[INFO] [stdout] 626 ~         )))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:694:17
[INFO] [stdout]     |
[INFO] [stdout] 694 |               Err(crate::error::RusTorchError::tensor_op(
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 695 | |                 "No GPU acceleration available (enable metal, coreml, or mac-hybrid features)"
[INFO] [stdout] 696 | |                     .to_string(),
[INFO] [stdout] 697 | |             )
[INFO] [stdout] 698 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 697 -             )
[INFO] [stdout] 698 -             .into())
[INFO] [stdout] 697 +             ))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 694 ~             Err(<error::RusTorchError as Into<_>>::into(crate::error::RusTorchError::tensor_op(
[INFO] [stdout] 695 |                 "No GPU acceleration available (enable metal, coreml, or mac-hybrid features)"
[INFO] [stdout] 696 |                     .to_string(),
[INFO] [stdout] 697 ~             )))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]   --> src/vision/transforms.rs:84:60
[INFO] [stdout]    |
[INFO] [stdout] 84 |         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 84 -         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 84 +         Image::new(resized_data, image.format).map_err(|e| e)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 84 -         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 84 +         Image::new(resized_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:110:24
[INFO] [stdout]     |
[INFO] [stdout] 110 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 111 | |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 112 | |                 crop_height, crop_width, image.height, image.width
[INFO] [stdout] 113 | |             ))
[INFO] [stdout] 114 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 113 -             ))
[INFO] [stdout] 114 -             .into());
[INFO] [stdout] 113 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 110 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 111 |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 112 |                 crop_height, crop_width, image.height, image.width
[INFO] [stdout] 113 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:131:60
[INFO] [stdout]     |
[INFO] [stdout] 131 |         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 131 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 131 +         Image::new(cropped_data, image.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 131 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 131 +         Image::new(cropped_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:181:24
[INFO] [stdout]     |
[INFO] [stdout] 181 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 182 | |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 183 | |                 crop_height, crop_width, working_image.height, working_image.width
[INFO] [stdout] 184 | |             ))
[INFO] [stdout] 185 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 184 -             ))
[INFO] [stdout] 185 -             .into());
[INFO] [stdout] 184 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 181 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 182 |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 183 |                 crop_height, crop_width, working_image.height, working_image.width
[INFO] [stdout] 184 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:202:60
[INFO] [stdout]     |
[INFO] [stdout] 202 |         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 202 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 202 +         Image::new(cropped_data, image.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 202 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 202 +         Image::new(cropped_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:297:24
[INFO] [stdout]     |
[INFO] [stdout] 297 |               return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 298 | |                 "Mean and std must have same length".to_string(),
[INFO] [stdout] 299 | |             )
[INFO] [stdout] 300 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 299 -             )
[INFO] [stdout] 300 -             .into());
[INFO] [stdout] 299 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 297 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 298 |                 "Mean and std must have same length".to_string(),
[INFO] [stdout] 299 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:327:24
[INFO] [stdout]     |
[INFO] [stdout] 327 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 328 | |                 "Mean length {} doesn't match image channels {}",
[INFO] [stdout] 329 | |                 self.mean.len(),
[INFO] [stdout] 330 | |                 image.channels
[INFO] [stdout] 331 | |             ))
[INFO] [stdout] 332 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 331 -             ))
[INFO] [stdout] 332 -             .into());
[INFO] [stdout] 331 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 327 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 328 |                 "Mean length {} doesn't match image channels {}",
[INFO] [stdout] 329 |                 self.mean.len(),
[INFO] [stdout] 330 |                 image.channels
[INFO] [stdout] 331 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:377:50
[INFO] [stdout]     |
[INFO] [stdout] 377 |         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 377 -         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout] 377 +         image.to_format(self.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 377 -         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout] 377 +         image.to_format(self.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]   --> src/vision/utils.rs:55:59
[INFO] [stdout]    |
[INFO] [stdout] 55 |     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout]    |                                                           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 55 -     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout] 55 +     Image::new(grid_tensor, images[0].format).map_err(|e| e)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 55 -     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout] 55 +     Image::new(grid_tensor, images[0].format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:96:24
[INFO] [stdout]     |
[INFO] [stdout]  96 |               return Err(RusTorchError::InvalidImageShape(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout]  97 | |                 "Expected 2D or 3D tensor, got {:?}",
[INFO] [stdout]  98 | |                 shape
[INFO] [stdout]  99 | |             ))
[INFO] [stdout] 100 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout]  99 -             ))
[INFO] [stdout] 100 -             .into())
[INFO] [stdout]  99 +             )))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout]  96 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidImageShape(format!(
[INFO] [stdout]  97 |                 "Expected 2D or 3D tensor, got {:?}",
[INFO] [stdout]  98 |                 shape
[INFO] [stdout]  99 ~             ))))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:104:52
[INFO] [stdout]     |
[INFO] [stdout] 104 |     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout]     |                                                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 104 -     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout] 104 +     Image::new(tensor.clone(), format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 104 -     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout] 104 +     Image::new(tensor.clone(), format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:124:20
[INFO] [stdout]     |
[INFO] [stdout] 124 |           return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ____________________^
[INFO] [stdout] 125 | |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 126 | |         )
[INFO] [stdout] 127 | |         .into());
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         )
[INFO] [stdout] 127 -         .into());
[INFO] [stdout] 126 +         ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 124 ~         return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 125 |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 126 ~         )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:146:20
[INFO] [stdout]     |
[INFO] [stdout] 146 |           return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ____________________^
[INFO] [stdout] 147 | |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 148 | |         )
[INFO] [stdout] 149 | |         .into());
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 148 -         )
[INFO] [stdout] 149 -         .into());
[INFO] [stdout] 148 +         ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 146 ~         return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 147 |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 148 ~         )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:278:24
[INFO] [stdout]     |
[INFO] [stdout] 278 |               return Err(RusTorchError::InvalidDataFormat(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 279 | |                 "X and Y data must have the same non-zero length".to_string(),
[INFO] [stdout] 280 | |             )
[INFO] [stdout] 281 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 280 -             )
[INFO] [stdout] 281 -             .into());
[INFO] [stdout] 280 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 278 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(
[INFO] [stdout] 279 |                 "X and Y data must have the same non-zero length".to_string(),
[INFO] [stdout] 280 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:347:28
[INFO] [stdout]     |
[INFO] [stdout] 347 |                   return Err(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 348 | |                     "Metric '{}' has no values",
[INFO] [stdout] 349 | |                     metric_name
[INFO] [stdout] 350 | |                 ))
[INFO] [stdout] 351 | |                 .into());
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 350 -                 ))
[INFO] [stdout] 351 -                 .into());
[INFO] [stdout] 350 +                 )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 347 ~                 return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout] 348 |                     "Metric '{}' has no values",
[INFO] [stdout] 349 |                     metric_name
[INFO] [stdout] 350 ~                 ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:355:17
[INFO] [stdout]     |
[INFO] [stdout] 355 |               Err(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 356 | |                 "Metric '{}' not found in training history",
[INFO] [stdout] 357 | |                 metric_name
[INFO] [stdout] 358 | |             ))
[INFO] [stdout] 359 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 358 -             ))
[INFO] [stdout] 359 -             .into())
[INFO] [stdout] 358 +             )))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 355 ~             Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout] 356 |                 "Metric '{}' not found in training history",
[INFO] [stdout] 357 |                 metric_name
[INFO] [stdout] 358 ~             ))))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:373:24
[INFO] [stdout]     |
[INFO] [stdout] 373 |               return Err(RusTorchError::InvalidDataFormat(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 374 | |                 "Training history contains no data".to_string(),
[INFO] [stdout] 375 | |             )
[INFO] [stdout] 376 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 375 -             )
[INFO] [stdout] 376 -             .into());
[INFO] [stdout] 375 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 373 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(
[INFO] [stdout] 374 |                 "Training history contains no data".to_string(),
[INFO] [stdout] 375 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:392:24
[INFO] [stdout]     |
[INFO] [stdout] 392 |               return Err(RusTorchError::ConfigError(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 393 | |                 "Cannot plot empty training history".to_string(),
[INFO] [stdout] 394 | |             )
[INFO] [stdout] 395 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 394 -             )
[INFO] [stdout] 395 -             .into());
[INFO] [stdout] 394 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 392 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::ConfigError(
[INFO] [stdout] 393 |                 "Cannot plot empty training history".to_string(),
[INFO] [stdout] 394 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rustorch` (lib) due to 21 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `std::option::Option<u64>`
[INFO] [stdout]    --> src/distributed/data_parallel.rs:526:72
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let loader = DistributedDataLoader::new(data, labels, 2, true, Some(42).into());
[INFO] [stdout]     |                                                                        ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 526 -         let loader = DistributedDataLoader::new(data, labels, 2, true, Some(42).into());
[INFO] [stdout] 526 +         let loader = DistributedDataLoader::new(data, labels, 2, true, Some(42));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 526 -         let loader = DistributedDataLoader::new(data, labels, 2, true, Some(42).into());
[INFO] [stdout] 526 +         let loader = DistributedDataLoader::new(data, labels, 2, true, <std::option::Option<u64> as Into<_>>::into(Some(42)));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:614:44
[INFO] [stdout]     |
[INFO] [stdout] 614 |             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 614 -             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout] 614 +             self.matmul(other).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 614 -             self.matmul(other).map_err(|e| e.into())
[INFO] [stdout] 614 +             self.matmul(other).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:624:13
[INFO] [stdout]     |
[INFO] [stdout] 624 |           Err(crate::error::RusTorchError::tensor_op(
[INFO] [stdout]     |  _____________^
[INFO] [stdout] 625 | |             "GPU reduce not available without CUDA".to_string(),
[INFO] [stdout] 626 | |         )
[INFO] [stdout] 627 | |         .into())
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 626 -         )
[INFO] [stdout] 627 -         .into())
[INFO] [stdout] 626 +         ))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 624 ~         Err(<error::RusTorchError as Into<_>>::into(crate::error::RusTorchError::tensor_op(
[INFO] [stdout] 625 |             "GPU reduce not available without CUDA".to_string(),
[INFO] [stdout] 626 ~         )))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/tensor/gpu_parallel.rs:694:17
[INFO] [stdout]     |
[INFO] [stdout] 694 |               Err(crate::error::RusTorchError::tensor_op(
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 695 | |                 "No GPU acceleration available (enable metal, coreml, or mac-hybrid features)"
[INFO] [stdout] 696 | |                     .to_string(),
[INFO] [stdout] 697 | |             )
[INFO] [stdout] 698 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 697 -             )
[INFO] [stdout] 698 -             .into())
[INFO] [stdout] 697 +             ))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 694 ~             Err(<error::RusTorchError as Into<_>>::into(crate::error::RusTorchError::tensor_op(
[INFO] [stdout] 695 |                 "No GPU acceleration available (enable metal, coreml, or mac-hybrid features)"
[INFO] [stdout] 696 |                     .to_string(),
[INFO] [stdout] 697 ~             )))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]   --> src/vision/transforms.rs:84:60
[INFO] [stdout]    |
[INFO] [stdout] 84 |         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 84 -         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 84 +         Image::new(resized_data, image.format).map_err(|e| e)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 84 -         Image::new(resized_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 84 +         Image::new(resized_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:110:24
[INFO] [stdout]     |
[INFO] [stdout] 110 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 111 | |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 112 | |                 crop_height, crop_width, image.height, image.width
[INFO] [stdout] 113 | |             ))
[INFO] [stdout] 114 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 113 -             ))
[INFO] [stdout] 114 -             .into());
[INFO] [stdout] 113 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 110 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 111 |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 112 |                 crop_height, crop_width, image.height, image.width
[INFO] [stdout] 113 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:131:60
[INFO] [stdout]     |
[INFO] [stdout] 131 |         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 131 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 131 +         Image::new(cropped_data, image.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 131 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 131 +         Image::new(cropped_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:181:24
[INFO] [stdout]     |
[INFO] [stdout] 181 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 182 | |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 183 | |                 crop_height, crop_width, working_image.height, working_image.width
[INFO] [stdout] 184 | |             ))
[INFO] [stdout] 185 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 184 -             ))
[INFO] [stdout] 185 -             .into());
[INFO] [stdout] 184 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 181 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 182 |                 "Crop size ({}, {}) larger than image size ({}, {})",
[INFO] [stdout] 183 |                 crop_height, crop_width, working_image.height, working_image.width
[INFO] [stdout] 184 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:202:60
[INFO] [stdout]     |
[INFO] [stdout] 202 |         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 202 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 202 +         Image::new(cropped_data, image.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 202 -         Image::new(cropped_data, image.format).map_err(|e| e.into())
[INFO] [stdout] 202 +         Image::new(cropped_data, image.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:297:24
[INFO] [stdout]     |
[INFO] [stdout] 297 |               return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 298 | |                 "Mean and std must have same length".to_string(),
[INFO] [stdout] 299 | |             )
[INFO] [stdout] 300 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 299 -             )
[INFO] [stdout] 300 -             .into());
[INFO] [stdout] 299 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 297 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 298 |                 "Mean and std must have same length".to_string(),
[INFO] [stdout] 299 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:327:24
[INFO] [stdout]     |
[INFO] [stdout] 327 |               return Err(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 328 | |                 "Mean length {} doesn't match image channels {}",
[INFO] [stdout] 329 | |                 self.mean.len(),
[INFO] [stdout] 330 | |                 image.channels
[INFO] [stdout] 331 | |             ))
[INFO] [stdout] 332 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 331 -             ))
[INFO] [stdout] 332 -             .into());
[INFO] [stdout] 331 +             )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 327 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(format!(
[INFO] [stdout] 328 |                 "Mean length {} doesn't match image channels {}",
[INFO] [stdout] 329 |                 self.mean.len(),
[INFO] [stdout] 330 |                 image.channels
[INFO] [stdout] 331 ~             ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/transforms.rs:377:50
[INFO] [stdout]     |
[INFO] [stdout] 377 |         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 377 -         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout] 377 +         image.to_format(self.format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 377 -         image.to_format(self.format).map_err(|e| e.into())
[INFO] [stdout] 377 +         image.to_format(self.format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]   --> src/vision/utils.rs:55:59
[INFO] [stdout]    |
[INFO] [stdout] 55 |     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout]    |                                                           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 55 -     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout] 55 +     Image::new(grid_tensor, images[0].format).map_err(|e| e)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 55 -     Image::new(grid_tensor, images[0].format).map_err(|e| e.into())
[INFO] [stdout] 55 +     Image::new(grid_tensor, images[0].format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:96:24
[INFO] [stdout]     |
[INFO] [stdout]  96 |               return Err(RusTorchError::InvalidImageShape(format!(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout]  97 | |                 "Expected 2D or 3D tensor, got {:?}",
[INFO] [stdout]  98 | |                 shape
[INFO] [stdout]  99 | |             ))
[INFO] [stdout] 100 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout]  99 -             ))
[INFO] [stdout] 100 -             .into())
[INFO] [stdout]  99 +             )))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout]  96 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidImageShape(format!(
[INFO] [stdout]  97 |                 "Expected 2D or 3D tensor, got {:?}",
[INFO] [stdout]  98 |                 shape
[INFO] [stdout]  99 ~             ))))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:104:52
[INFO] [stdout]     |
[INFO] [stdout] 104 |     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout]     |                                                    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 104 -     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout] 104 +     Image::new(tensor.clone(), format).map_err(|e| e)
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 104 -     Image::new(tensor.clone(), format).map_err(|e| e.into())
[INFO] [stdout] 104 +     Image::new(tensor.clone(), format).map_err(|e| <error::RusTorchError as Into<_>>::into(e))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:124:20
[INFO] [stdout]     |
[INFO] [stdout] 124 |           return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ____________________^
[INFO] [stdout] 125 | |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 126 | |         )
[INFO] [stdout] 127 | |         .into());
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         )
[INFO] [stdout] 127 -         .into());
[INFO] [stdout] 126 +         ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 124 ~         return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 125 |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 126 ~         )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/vision/utils.rs:146:20
[INFO] [stdout]     |
[INFO] [stdout] 146 |           return Err(RusTorchError::InvalidTransformParams(
[INFO] [stdout]     |  ____________________^
[INFO] [stdout] 147 | |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 148 | |         )
[INFO] [stdout] 149 | |         .into());
[INFO] [stdout]     | |_______________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 148 -         )
[INFO] [stdout] 149 -         .into());
[INFO] [stdout] 148 +         ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 146 ~         return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidTransformParams(
[INFO] [stdout] 147 |             "Mean and std must have same length".to_string(),
[INFO] [stdout] 148 ~         )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:278:24
[INFO] [stdout]     |
[INFO] [stdout] 278 |               return Err(RusTorchError::InvalidDataFormat(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 279 | |                 "X and Y data must have the same non-zero length".to_string(),
[INFO] [stdout] 280 | |             )
[INFO] [stdout] 281 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 280 -             )
[INFO] [stdout] 281 -             .into());
[INFO] [stdout] 280 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 278 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(
[INFO] [stdout] 279 |                 "X and Y data must have the same non-zero length".to_string(),
[INFO] [stdout] 280 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:347:28
[INFO] [stdout]     |
[INFO] [stdout] 347 |                   return Err(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 348 | |                     "Metric '{}' has no values",
[INFO] [stdout] 349 | |                     metric_name
[INFO] [stdout] 350 | |                 ))
[INFO] [stdout] 351 | |                 .into());
[INFO] [stdout]     | |_______________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 350 -                 ))
[INFO] [stdout] 351 -                 .into());
[INFO] [stdout] 350 +                 )));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 347 ~                 return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout] 348 |                     "Metric '{}' has no values",
[INFO] [stdout] 349 |                     metric_name
[INFO] [stdout] 350 ~                 ))));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:355:17
[INFO] [stdout]     |
[INFO] [stdout] 355 |               Err(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 356 | |                 "Metric '{}' not found in training history",
[INFO] [stdout] 357 | |                 metric_name
[INFO] [stdout] 358 | |             ))
[INFO] [stdout] 359 | |             .into())
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 358 -             ))
[INFO] [stdout] 359 -             .into())
[INFO] [stdout] 358 +             )))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 355 ~             Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(format!(
[INFO] [stdout] 356 |                 "Metric '{}' not found in training history",
[INFO] [stdout] 357 |                 metric_name
[INFO] [stdout] 358 ~             ))))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:373:24
[INFO] [stdout]     |
[INFO] [stdout] 373 |               return Err(RusTorchError::InvalidDataFormat(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 374 | |                 "Training history contains no data".to_string(),
[INFO] [stdout] 375 | |             )
[INFO] [stdout] 376 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 375 -             )
[INFO] [stdout] 376 -             .into());
[INFO] [stdout] 375 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 373 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::InvalidDataFormat(
[INFO] [stdout] 374 |                 "Training history contains no data".to_string(),
[INFO] [stdout] 375 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `error::RusTorchError`
[INFO] [stdout]    --> src/visualization/plotting.rs:392:24
[INFO] [stdout]     |
[INFO] [stdout] 392 |               return Err(RusTorchError::ConfigError(
[INFO] [stdout]     |  ________________________^
[INFO] [stdout] 393 | |                 "Cannot plot empty training history".to_string(),
[INFO] [stdout] 394 | |             )
[INFO] [stdout] 395 | |             .into());
[INFO] [stdout]     | |___________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 394 -             )
[INFO] [stdout] 395 -             .into());
[INFO] [stdout] 394 +             ));
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 392 ~             return Err(<error::RusTorchError as Into<_>>::into(RusTorchError::ConfigError(
[INFO] [stdout] 393 |                 "Cannot plot empty training history".to_string(),
[INFO] [stdout] 394 ~             )));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rustorch` (lib test) due to 22 previous errors
[INFO] running `Command { std: "docker" "inspect" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb", kill_on_drop: false }`
[INFO] [stdout] f651371acae3b784c668b78098650064ce04ee46485c7a1a2dc89751762280eb
