[INFO] crate tract-core 0.1.1 is already in cache [INFO] extracting crate tract-core 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/tract-core/0.1.1 [INFO] extracting crate tract-core 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tract-core/0.1.1 [INFO] validating manifest of tract-core-0.1.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tract-core-0.1.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tract-core-0.1.1 [INFO] finished frobbing tract-core-0.1.1 [INFO] frobbed toml for tract-core-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/tract-core/0.1.1/Cargo.toml [INFO] started frobbing tract-core-0.1.1 [INFO] finished frobbing tract-core-0.1.1 [INFO] frobbed toml for tract-core-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/tract-core/0.1.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting tract-core-0.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/tract-core/0.1.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a23c7f7038e2277611279c7e01e4a5a6370f975bea7cec16fe59aacc39d41ecf [INFO] running `"docker" "start" "-a" "a23c7f7038e2277611279c7e01e4a5a6370f975bea7cec16fe59aacc39d41ecf"` [INFO] [stderr] Compiling memchr v2.1.3 [INFO] [stderr] Compiling ndarray v0.12.1 [INFO] [stderr] Checking objekt v0.1.2 [INFO] [stderr] Compiling num-complex v0.2.1 [INFO] [stderr] Checking rand_os v0.1.1 [INFO] [stderr] Checking rand_xoshiro v0.1.0 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Compiling derive-new v0.5.6 [INFO] [stderr] Checking csv-core v0.1.5 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking csv v1.0.5 [INFO] [stderr] Checking simplelog v0.5.3 [INFO] [stderr] Checking criterion v0.2.9 [INFO] [stderr] Checking tract-core v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ops/nn/data_formats.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | shape: shape, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `shape` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ops/nn/data_formats.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | shape: shape, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `shape` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/broadcast.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | return Some(shape); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(shape)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dim/stack.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dim/stack.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/dim/tree.rs:299:28 [INFO] [stderr] | [INFO] [stderr] 299 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 300 | | if value == 1 { [INFO] [stderr] 301 | | item [INFO] [stderr] 302 | | } else { [INFO] [stderr] 303 | | Mul(value, vec![item]) [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 299 | } else if value == 1 { [INFO] [stderr] 300 | item [INFO] [stderr] 301 | } else { [INFO] [stderr] 302 | Mul(value, vec![item]) [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/broadcast.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | return Some(shape); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(shape)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dim/stack.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/dim/stack.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/dim/tree.rs:299:28 [INFO] [stderr] | [INFO] [stderr] 299 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 300 | | if value == 1 { [INFO] [stderr] 301 | | item [INFO] [stderr] 302 | | } else { [INFO] [stderr] 303 | | Mul(value, vec![item]) [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 299 | } else if value == 1 { [INFO] [stderr] 300 | item [INFO] [stderr] 301 | } else { [INFO] [stderr] 302 | Mul(value, vec![item]) [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ops/nn/batch_norm.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | return Ok(tvec!(x.into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tvec!(x.into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ops/nn/padding.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | dim [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ops/nn/padding.rs:107:27 [INFO] [stderr] | [INFO] [stderr] 107 | let dim = (data_spatial_shape[ax] + bef[ax] + aft[ax] - kernel_field + 1) [INFO] [stderr] | ___________________________^ [INFO] [stderr] 108 | | .div_ceil(strides[ax]); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tensor.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ops/nn/batch_norm.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | return Ok(tvec!(x.into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tvec!(x.into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ops/nn/padding.rs:109:17 [INFO] [stderr] | [INFO] [stderr] 109 | dim [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ops/nn/padding.rs:107:27 [INFO] [stderr] | [INFO] [stderr] 107 | let dim = (data_spatial_shape[ax] + bef[ax] + aft[ax] - kernel_field + 1) [INFO] [stderr] | ___________________________^ [INFO] [stderr] 108 | | .div_ceil(strides[ax]); [INFO] [stderr] | |__________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tensor.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'ndarray::impl_methods::>::remove_axis': use `.index_axis_move(Axis(_), 0)` instead [INFO] [stderr] --> src/ops/nn/reduce.rs:111:37 [INFO] [stderr] | [INFO] [stderr] 111 | result = result.remove_axis(Axis(ax)); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'ndarray::impl_methods::>::remove_axis': use `.index_axis_move(Axis(_), 0)` instead [INFO] [stderr] --> src/ops/nn/reduce.rs:111:37 [INFO] [stderr] | [INFO] [stderr] 111 | result = result.remove_axis(Axis(ax)); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/analyser/types.rs:90:55 [INFO] [stderr] | [INFO] [stderr] 90 | .map(|d| d.map(|d| (d as isize).to_dim()).unwrap_or(TDim::s())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(TDim::s)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/analyser/types.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | / match dim { [INFO] [stderr] 263 | | GenericFact::Only(ref mut it) => it.reduce(), [INFO] [stderr] 264 | | _ => (), [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________^ help: try this: `if let GenericFact::Only(ref mut it) = dim { it.reduce() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:333:48 [INFO] [stderr] | [INFO] [stderr] 333 | ShapeFact::closed(iter.into_iter().map(|d| GenericFact::Only(d)).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericFact::Only` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/analyser/types.rs:340:15 [INFO] [stderr] | [INFO] [stderr] 340 | slice.into_iter().map(|i| TDim::from(*i)).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/analyser/types.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | / shape [INFO] [stderr] 348 | | .map(|s| ShapeFact::from(s)) [INFO] [stderr] 349 | | .unwrap_or(ShapeFact::default()) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 347 | shape [INFO] [stderr] 348 | .map(|s| ShapeFact::from(s)).unwrap_or_default() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:348:18 [INFO] [stderr] | [INFO] [stderr] 348 | .map(|s| ShapeFact::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ShapeFact::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:356:31 [INFO] [stderr] | [INFO] [stderr] 356 | shape.into_iter().map(|i| TDim::from(i)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TDim::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/analyser/helpers.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | inputs: &Vec<&TensorFact>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[&TensorFact]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/analyser/helpers.rs:52:14 [INFO] [stderr] | [INFO] [stderr] 52 | for i in 1..(bound + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=bound` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/analyser/helpers.rs:110:22 [INFO] [stderr] | [INFO] [stderr] 110 | let datum_type = inputs [INFO] [stderr] | ______________________^ [INFO] [stderr] 111 | | .iter() [INFO] [stderr] 112 | | .filter_map(|i| i.datum_type.concretize()) [INFO] [stderr] 113 | | .next() [INFO] [stderr] 114 | | .map(|t| typefact!(t)) [INFO] [stderr] 115 | | .unwrap_or(typefact!(_)); [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 110 | let datum_type = inputs [INFO] [stderr] 111 | .iter() [INFO] [stderr] 112 | .filter_map(|i| i.datum_type.concretize()) [INFO] [stderr] 113 | .next() [INFO] [stderr] 114 | .map(|t| typefact!(t)).unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/analyser/helpers.rs:119:57 [INFO] [stderr] | [INFO] [stderr] 119 | shape: infer_shape_broadcasting(&input_shapes)?.unwrap_or(shapefact![..]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| shapefact![..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:65:14 [INFO] [stderr] | [INFO] [stderr] 65 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:80:14 [INFO] [stderr] | [INFO] [stderr] 80 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:95:14 [INFO] [stderr] | [INFO] [stderr] 95 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:110:14 [INFO] [stderr] | [INFO] [stderr] 110 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/analyser/rules/expr.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | Dim(DimFact), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 121 | Dim(Box), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/analyser/rules/path.rs:171:19 [INFO] [stderr] | [INFO] [stderr] 171 | [0] => Ok(fact.datum_type.clone().wrap()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `fact.datum_type` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/analyser/rules/path.rs:309:8 [INFO] [stderr] | [INFO] [stderr] 309 | if path == &[-1] || path == &[] { [INFO] [stderr] | ^^^^^^^^----- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[-1]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/analyser/rules/path.rs:309:25 [INFO] [stderr] | [INFO] [stderr] 309 | if path == &[-1] || path == &[] { [INFO] [stderr] | ^^^^^^^^--- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 327 | Tensor::I32(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 328 | Tensor::I8(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 329 | Tensor::U8(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/analyser/rules/solver.rs:364:28 [INFO] [stderr] | [INFO] [stderr] 364 | changed |= step_added.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!step_added.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/dim/stack.rs:78:53 [INFO] [stderr] | [INFO] [stderr] 78 | Sym(v) => stack.push(*values.get(v).ok_or(format!("Unresolved value {:?}", v))?), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Unresolved value {:?}", v))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/dim/stack.rs:115:12 [INFO] [stderr] | [INFO] [stderr] 115 | if stack.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/dim/stack.rs:190:16 [INFO] [stderr] | [INFO] [stderr] 190 | if let Some(_) = self.val() { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 191 | | return Ok(self); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________- help: try this: `if self.val().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/dim/tree.rs:96:12 [INFO] [stderr] | [INFO] [stderr] 96 | if stack.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dim/tree.rs:263:20 [INFO] [stderr] | [INFO] [stderr] 263 | if members.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `members.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dim/tree.rs:288:27 [INFO] [stderr] | [INFO] [stderr] 288 | } else if reduced.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `reduced.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/model/dsl.rs:128:58 [INFO] [stderr] | [INFO] [stderr] 128 | let id = self.add_node(name.as_ref().to_owned(), op.into())?; [INFO] [stderr] | ^^^^^^^^^ help: consider removing `.into()`: `op` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/analyser/types.rs:90:55 [INFO] [stderr] | [INFO] [stderr] 90 | .map(|d| d.map(|d| (d as isize).to_dim()).unwrap_or(TDim::s())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(TDim::s)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/analyser/types.rs:262:13 [INFO] [stderr] | [INFO] [stderr] 262 | / match dim { [INFO] [stderr] 263 | | GenericFact::Only(ref mut it) => it.reduce(), [INFO] [stderr] 264 | | _ => (), [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________^ help: try this: `if let GenericFact::Only(ref mut it) = dim { it.reduce() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:333:48 [INFO] [stderr] | [INFO] [stderr] 333 | ShapeFact::closed(iter.into_iter().map(|d| GenericFact::Only(d)).collect()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `GenericFact::Only` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/analyser/types.rs:340:15 [INFO] [stderr] | [INFO] [stderr] 340 | slice.into_iter().map(|i| TDim::from(*i)).collect() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/analyser/types.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | / shape [INFO] [stderr] 348 | | .map(|s| ShapeFact::from(s)) [INFO] [stderr] 349 | | .unwrap_or(ShapeFact::default()) [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 347 | shape [INFO] [stderr] 348 | .map(|s| ShapeFact::from(s)).unwrap_or_default() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:348:18 [INFO] [stderr] | [INFO] [stderr] 348 | .map(|s| ShapeFact::from(s)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ShapeFact::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/analyser/types.rs:356:31 [INFO] [stderr] | [INFO] [stderr] 356 | shape.into_iter().map(|i| TDim::from(i)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TDim::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/analyser/helpers.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | inputs: &Vec<&TensorFact>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[&TensorFact]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/analyser/helpers.rs:52:14 [INFO] [stderr] | [INFO] [stderr] 52 | for i in 1..(bound + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `1..=bound` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `default` [INFO] [stderr] --> src/analyser/helpers.rs:110:22 [INFO] [stderr] | [INFO] [stderr] 110 | let datum_type = inputs [INFO] [stderr] | ______________________^ [INFO] [stderr] 111 | | .iter() [INFO] [stderr] 112 | | .filter_map(|i| i.datum_type.concretize()) [INFO] [stderr] 113 | | .next() [INFO] [stderr] 114 | | .map(|t| typefact!(t)) [INFO] [stderr] 115 | | .unwrap_or(typefact!(_)); [INFO] [stderr] | |________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 110 | let datum_type = inputs [INFO] [stderr] 111 | .iter() [INFO] [stderr] 112 | .filter_map(|i| i.datum_type.concretize()) [INFO] [stderr] 113 | .next() [INFO] [stderr] 114 | .map(|t| typefact!(t)).unwrap_or_default(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/analyser/helpers.rs:119:57 [INFO] [stderr] | [INFO] [stderr] 119 | shape: infer_shape_broadcasting(&input_shapes)?.unwrap_or(shapefact![..]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| shapefact![..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:58:79 [INFO] [stderr] | [INFO] [stderr] 58 | let mut target = pad.slice_axis_mut(axis, Slice::from(i..i + 1)); [INFO] [stderr] | ^^^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:65:63 [INFO] [stderr] | [INFO] [stderr] 65 | data.slice_axis(axis, Slice::from(source_slice..source_slice + 1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `source_slice..=source_slice` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:72:79 [INFO] [stderr] | [INFO] [stderr] 72 | let mut target = pad.slice_axis_mut(axis, Slice::from(i..i + 1)); [INFO] [stderr] | ^^^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:79:63 [INFO] [stderr] | [INFO] [stderr] 79 | data.slice_axis(axis, Slice::from(source_slice..source_slice + 1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `source_slice..=source_slice` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:65:14 [INFO] [stderr] | [INFO] [stderr] 65 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:80:14 [INFO] [stderr] | [INFO] [stderr] 80 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:95:14 [INFO] [stderr] | [INFO] [stderr] 95 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/analyser/rules/expr.rs:110:14 [INFO] [stderr] | [INFO] [stderr] 110 | .ok_or(message.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| message.into())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/analyser/rules/expr.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | Dim(DimFact), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 121 | Dim(Box), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/analyser/rules/path.rs:171:19 [INFO] [stderr] | [INFO] [stderr] 171 | [0] => Ok(fact.datum_type.clone().wrap()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `fact.datum_type` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/analyser/rules/path.rs:309:8 [INFO] [stderr] | [INFO] [stderr] 309 | if path == &[-1] || path == &[] { [INFO] [stderr] | ^^^^^^^^----- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[-1]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/analyser/rules/path.rs:309:25 [INFO] [stderr] | [INFO] [stderr] 309 | if path == &[-1] || path == &[] { [INFO] [stderr] | ^^^^^^^^--- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 327 | Tensor::I32(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 328 | Tensor::I8(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/analyser/rules/path.rs:318:32 [INFO] [stderr] | [INFO] [stderr] 318 | Some(&v) => Ok((v as i64).wrap()), [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] ... [INFO] [stderr] 329 | Tensor::U8(array) => inner!(array), [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/analyser/rules/solver.rs:364:28 [INFO] [stderr] | [INFO] [stderr] 364 | changed |= step_added.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!step_added.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:665:27 [INFO] [stderr] | [INFO] [stderr] 665 | .infer_facts((tvec![].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:665:43 [INFO] [stderr] | [INFO] [stderr] 665 | .infer_facts((tvec![].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:675:27 [INFO] [stderr] | [INFO] [stderr] 675 | .infer_facts((tvec![].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:675:43 [INFO] [stderr] | [INFO] [stderr] 675 | .infer_facts((tvec![].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:686:27 [INFO] [stderr] | [INFO] [stderr] 686 | .infer_facts((tvec![&any].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![&any]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:686:47 [INFO] [stderr] | [INFO] [stderr] 686 | .infer_facts((tvec![&any].into(), tvec![].into())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:688:28 [INFO] [stderr] | [INFO] [stderr] 688 | assert_eq!(facts, (tvec![TensorFact::new()].into(), tvec![].into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![TensorFact::new()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyser/rules/solver.rs:688:61 [INFO] [stderr] | [INFO] [stderr] 688 | assert_eq!(facts, (tvec![TensorFact::new()].into(), tvec![].into())); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `tvec![]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/broadcast.rs:38:29 [INFO] [stderr] | [INFO] [stderr] 38 | multi_broadcast(&vec![vec![2, 3, 4, 5], vec![]]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/broadcast.rs:46:29 [INFO] [stderr] | [INFO] [stderr] 46 | multi_broadcast(&vec![vec![2, 3, 4, 5], vec![5]]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/broadcast.rs:54:29 [INFO] [stderr] | [INFO] [stderr] 54 | multi_broadcast(&vec![vec![4, 5], vec![2, 3, 4, 5]]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/broadcast.rs:62:29 [INFO] [stderr] | [INFO] [stderr] 62 | multi_broadcast(&vec![vec![1, 4, 5], vec![2, 3, 4, 1]]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/broadcast.rs:70:29 [INFO] [stderr] | [INFO] [stderr] 70 | multi_broadcast(&vec![vec![3, 4, 5], vec![2, 1, 1, 1]]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/dim/stack.rs:78:53 [INFO] [stderr] | [INFO] [stderr] 78 | Sym(v) => stack.push(*values.get(v).ok_or(format!("Unresolved value {:?}", v))?), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| format!("Unresolved value {:?}", v))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/dim/stack.rs:115:12 [INFO] [stderr] | [INFO] [stderr] 115 | if stack.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/dim/stack.rs:190:16 [INFO] [stderr] | [INFO] [stderr] 190 | if let Some(_) = self.val() { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 191 | | return Ok(self); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________- help: try this: `if self.val().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `Stack::from(3)` [INFO] [stderr] --> src/dim/stack.rs:417:24 [INFO] [stderr] | [INFO] [stderr] 417 | let e: Stack = Stack::from(3) + 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `Stack::from(2)` [INFO] [stderr] --> src/dim/stack.rs:425:24 [INFO] [stderr] | [INFO] [stderr] 425 | let e: Stack = Stack::from(2) / 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/dim/tree.rs:96:12 [INFO] [stderr] | [INFO] [stderr] 96 | if stack.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dim/tree.rs:263:20 [INFO] [stderr] | [INFO] [stderr] 263 | if members.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `members.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/dim/tree.rs:288:27 [INFO] [stderr] | [INFO] [stderr] 288 | } else if reduced.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `reduced.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ops/math/gemm.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | let mut c = if c.shape() == &[c_shape.0, c_shape.1] { [INFO] [stderr] | ^^^^^^^^^^^^^----------------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[c_shape.0, c_shape.1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/model/dsl.rs:128:58 [INFO] [stderr] | [INFO] [stderr] 128 | let id = self.add_node(name.as_ref().to_owned(), op.into())?; [INFO] [stderr] | ^^^^^^^^^ help: consider removing `.into()`: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:58:79 [INFO] [stderr] | [INFO] [stderr] 58 | let mut target = pad.slice_axis_mut(axis, Slice::from(i..i + 1)); [INFO] [stderr] | ^^^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:65:63 [INFO] [stderr] | [INFO] [stderr] 65 | data.slice_axis(axis, Slice::from(source_slice..source_slice + 1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `source_slice..=source_slice` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:72:79 [INFO] [stderr] | [INFO] [stderr] 72 | let mut target = pad.slice_axis_mut(axis, Slice::from(i..i + 1)); [INFO] [stderr] | ^^^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/array/pad.rs:79:63 [INFO] [stderr] | [INFO] [stderr] 79 | data.slice_axis(axis, Slice::from(source_slice..source_slice + 1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `source_slice..=source_slice` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ops/logic.rs:9:74 [INFO] [stderr] | [INFO] [stderr] 9 | element_bin!(Equals, [bool, u8, i8, i32, f32, f64, TDim] => bool { |a,b| a==b }); [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/ops/math/gemm.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | let mut c = if c.shape() == &[c_shape.0, c_shape.1] { [INFO] [stderr] | ^^^^^^^^^^^^^----------------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `[c_shape.0, c_shape.1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/arg_max_min.rs:16:42 [INFO] [stderr] | [INFO] [stderr] 16 | |a, b| a.1.partial_cmp(&b.1).unwrap_or(a.0.cmp(&b.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| a.0.cmp(&b.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/arg_max_min.rs:18:42 [INFO] [stderr] | [INFO] [stderr] 18 | |a, b| b.1.partial_cmp(&a.1).unwrap_or(a.0.cmp(&b.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| a.0.cmp(&b.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn new( [INFO] [stderr] 23 | | data_fmt: DataFormat, [INFO] [stderr] 24 | | kernel_is_hwio: bool, [INFO] [stderr] 25 | | dilations: Vec, [INFO] [stderr] ... | [INFO] [stderr] 87 | | }) [INFO] [stderr] 88 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:105:61 [INFO] [stderr] | [INFO] [stderr] 105 | .slice_axis(Axis(input_shape.n_axis()), (i..(i + 1)).into()) [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(i..=i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:115:78 [INFO] [stderr] | [INFO] [stderr] 115 | *col.next().expect("geometry error in conv") = v.unwrap_or(D::zero()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(D::zero)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:121:79 [INFO] [stderr] | [INFO] [stderr] 121 | output_subview.slice_axis_inplace(Axis(input_shape.n_axis()), (i..(i + 1)).into()); [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(i..=i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/unary.rs:32:48 [INFO] [stderr] | [INFO] [stderr] 32 | let dilations = conv.dilations.clone().unwrap_or(vec![1; spatial_rank]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![1; spatial_rank])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/unary.rs:33:44 [INFO] [stderr] | [INFO] [stderr] 33 | let strides = conv.strides.clone().unwrap_or(vec![1; spatial_rank]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![1; spatial_rank])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/ops/nn/conv/unary.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | self.kernel.shape().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 115 | &(*self.kernel.shape()).clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 115 | &[usize]::clone(self.kernel.shape()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/data_formats.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn shape(&self, shape: S) -> DataShape [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/nn/global_pools.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | fn rules<'r, 'p: 'r, 's: 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/layer_max.rs:28:54 [INFO] [stderr] | [INFO] [stderr] 28 | .max_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(b.0.cmp(&a.0))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| b.0.cmp(&a.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/nn/layer_max.rs:180:22 [INFO] [stderr] | [INFO] [stderr] 180 | fn rules<'r, 'p: 'r, 's: 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `o` is only used to index `outputs`. [INFO] [stderr] --> src/ops/nn/maxpool.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for o in 0..self.noutputs() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 104 | for in outputs.iter().take(self.noutputs()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/nn/patches.rs:176:9 [INFO] [stderr] | [INFO] [stderr] 176 | / match self { [INFO] [stderr] 177 | | &mut PatchIterator::Fast(ref mut it) => it.next(), [INFO] [stderr] 178 | | &mut PatchIterator::Safe(ref mut it) => it.next(), [INFO] [stderr] 179 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 176 | match *self { [INFO] [stderr] 177 | PatchIterator::Fast(ref mut it) => it.next(), [INFO] [stderr] 178 | PatchIterator::Safe(ref mut it) => it.next(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/reduce.rs:47:15 [INFO] [stderr] | [INFO] [stderr] 47 | fn reduce(&self, reduce: &Reduce, input: Value) -> TractResult { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/reduce.rs:79:23 [INFO] [stderr] | [INFO] [stderr] 79 | fn reduce_t(&self, reduce: &Reduce, input: Value, f: F) -> TractResult [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | / fn l1s_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 120 | | where [INFO] [stderr] 121 | | T: Datum + num::Signed + num::Zero, [INFO] [stderr] 122 | | { [INFO] [stderr] 123 | | v.fold(T::zero(), |acc, &v| acc + v.abs()) [INFO] [stderr] 124 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:126:1 [INFO] [stderr] | [INFO] [stderr] 126 | / fn l1u_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 127 | | where [INFO] [stderr] 128 | | T: Datum + num::Unsigned + num::Zero, [INFO] [stderr] 129 | | { [INFO] [stderr] 130 | | v.fold(T::zero(), |acc, &v| acc + v) [INFO] [stderr] 131 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:133:1 [INFO] [stderr] | [INFO] [stderr] 133 | / fn l2_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 134 | | where [INFO] [stderr] 135 | | T: Datum + AsPrimitive, [INFO] [stderr] 136 | | f64: AsPrimitive, [INFO] [stderr] ... | [INFO] [stderr] 140 | | .as_() [INFO] [stderr] 141 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:143:1 [INFO] [stderr] | [INFO] [stderr] 143 | / fn log_sum_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 144 | | where [INFO] [stderr] 145 | | T: Datum + num::Zero + num::Float, [INFO] [stderr] 146 | | { [INFO] [stderr] 147 | | v.scalar_sum().ln() [INFO] [stderr] 148 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:150:1 [INFO] [stderr] | [INFO] [stderr] 150 | / fn log_sum_exp_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 151 | | where [INFO] [stderr] 152 | | T: Datum + num::Zero + num::Float, [INFO] [stderr] 153 | | { [INFO] [stderr] 154 | | let max = v.fold(T::min_value(), |acc, &v| if acc > v { acc } else { v }); [INFO] [stderr] 155 | | max + v.fold(T::zero(), |acc, &v| acc + (v - max).exp()).ln() [INFO] [stderr] 156 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:158:1 [INFO] [stderr] | [INFO] [stderr] 158 | / fn max_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 159 | | where [INFO] [stderr] 160 | | T: Datum + num::Bounded + ::std::cmp::PartialOrd, [INFO] [stderr] 161 | | { [INFO] [stderr] 162 | | v.fold(T::min_value(), |acc, &v| if acc > v { acc } else { v }) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:165:1 [INFO] [stderr] | [INFO] [stderr] 165 | / fn mean_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 166 | | where [INFO] [stderr] 167 | | T: Datum + num::Zero + ::std::ops::Div, [INFO] [stderr] 168 | | usize: AsPrimitive, [INFO] [stderr] ... | [INFO] [stderr] 171 | | sum / count.as_() [INFO] [stderr] 172 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:174:1 [INFO] [stderr] | [INFO] [stderr] 174 | / fn min_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 175 | | where [INFO] [stderr] 176 | | T: Datum + num::Bounded + ::std::cmp::PartialOrd, [INFO] [stderr] 177 | | { [INFO] [stderr] 178 | | v.fold(T::max_value(), |acc, &v| if acc < v { acc } else { v }) [INFO] [stderr] 179 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | / fn prod_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 182 | | where [INFO] [stderr] 183 | | T: Datum + num::One, [INFO] [stderr] 184 | | { [INFO] [stderr] 185 | | v.fold(T::one(), |acc, &v| acc * v) [INFO] [stderr] 186 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:188:1 [INFO] [stderr] | [INFO] [stderr] 188 | / fn sum_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 189 | | where [INFO] [stderr] 190 | | T: Datum + num::Zero, [INFO] [stderr] 191 | | { [INFO] [stderr] 192 | | v.scalar_sum() [INFO] [stderr] 193 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:195:1 [INFO] [stderr] | [INFO] [stderr] 195 | / fn sum_square_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 196 | | where [INFO] [stderr] 197 | | T: Datum + num::Zero + ::std::ops::Mul, [INFO] [stderr] 198 | | { [INFO] [stderr] 199 | | v.fold(T::zero(), |acc, &v| acc + v * v) [INFO] [stderr] 200 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/types.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match self { [INFO] [stderr] 32 | | &Value::Owned(ref m) => &m, [INFO] [stderr] 33 | | &Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | match *self { [INFO] [stderr] 32 | Value::Owned(ref m) => &m, [INFO] [stderr] 33 | Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/types.rs:62:23 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn into_array<'a, D: ::tensor::Datum>(self) -> TractResult<::ndarray::ArrayD> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/types.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | / match self { [INFO] [stderr] 92 | | &Value::Owned(ref m) => &m, [INFO] [stderr] 93 | | &Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] 94 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 91 | match *self { [INFO] [stderr] 92 | Value::Owned(ref m) => &m, [INFO] [stderr] 93 | Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | inputs.push(prec[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `prec[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:209:25 [INFO] [stderr] | [INFO] [stderr] 209 | inputs.push(prec[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `prec[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | inputs.push(self.values[i.node].as_ref().unwrap()[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `self.values[i.node].as_ref().unwrap()[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tensor.rs:30:24 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn super_types(&self) -> &'static [DatumType] { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/tensor.rs:75:29 [INFO] [stderr] | [INFO] [stderr] 75 | while let Some(n) = iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for n in iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tensor.rs:84:30 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn common_super_type(&self, rhs: DatumType) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / match self { [INFO] [stderr] 157 | | &Tensor::Bool(ref it) => it.shape(), [INFO] [stderr] 158 | | &Tensor::U8(ref it) => it.shape(), [INFO] [stderr] 159 | | &Tensor::U16(ref it) => it.shape(), [INFO] [stderr] ... | [INFO] [stderr] 168 | | &Tensor::String(ref it) => it.shape(), [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 156 | match *self { [INFO] [stderr] 157 | Tensor::Bool(ref it) => it.shape(), [INFO] [stderr] 158 | Tensor::U8(ref it) => it.shape(), [INFO] [stderr] 159 | Tensor::U16(ref it) => it.shape(), [INFO] [stderr] 160 | Tensor::I8(ref it) => it.shape(), [INFO] [stderr] 161 | Tensor::I16(ref it) => it.shape(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tensor.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | Tensor::TDim(ref mut it) => { [INFO] [stderr] 193 | | it.mapv_inplace(|mut e| { [INFO] [stderr] 194 | | e.reduce(); [INFO] [stderr] ... | [INFO] [stderr] 198 | | _ => (), [INFO] [stderr] 199 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 191 | if let Tensor::TDim(ref mut it) = self { [INFO] [stderr] 192 | it.mapv_inplace(|mut e| { [INFO] [stderr] 193 | e.reduce(); [INFO] [stderr] 194 | e [INFO] [stderr] 195 | }); [INFO] [stderr] 196 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self { [INFO] [stderr] 204 | | &Tensor::Bool(_) => DatumType::Bool, [INFO] [stderr] 205 | | &Tensor::U8(_) => DatumType::U8, [INFO] [stderr] 206 | | &Tensor::U16(_) => DatumType::U16, [INFO] [stderr] ... | [INFO] [stderr] 215 | | &Tensor::String(_) => DatumType::String, [INFO] [stderr] 216 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 203 | match *self { [INFO] [stderr] 204 | Tensor::Bool(_) => DatumType::Bool, [INFO] [stderr] 205 | Tensor::U8(_) => DatumType::U8, [INFO] [stderr] 206 | Tensor::U16(_) => DatumType::U16, [INFO] [stderr] 207 | Tensor::I8(_) => DatumType::I8, [INFO] [stderr] 208 | Tensor::I16(_) => DatumType::I16, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self { [INFO] [stderr] 221 | | &Tensor::Bool(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 222 | | &Tensor::U8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 223 | | &Tensor::U16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] ... | [INFO] [stderr] 232 | | &Tensor::String(_) => bail!("String is not a datum"), [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *self { [INFO] [stderr] 221 | Tensor::Bool(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 222 | Tensor::U8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 223 | Tensor::U16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 224 | Tensor::I8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 225 | Tensor::I16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/arg_max_min.rs:16:42 [INFO] [stderr] | [INFO] [stderr] 16 | |a, b| a.1.partial_cmp(&b.1).unwrap_or(a.0.cmp(&b.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| a.0.cmp(&b.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/arg_max_min.rs:18:42 [INFO] [stderr] | [INFO] [stderr] 18 | |a, b| b.1.partial_cmp(&a.1).unwrap_or(a.0.cmp(&b.0)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| a.0.cmp(&b.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tensor.rs:273:12 [INFO] [stderr] | [INFO] [stderr] 273 | if self.shape().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.shape().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:274:16 [INFO] [stderr] | [INFO] [stderr] 274 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 275 | | &Tensor::Bool(ref a) => fmt_scalar!(a), [INFO] [stderr] 276 | | &Tensor::U8(ref a) => fmt_scalar!(a), [INFO] [stderr] 277 | | &Tensor::U16(ref a) => fmt_scalar!(a), [INFO] [stderr] ... | [INFO] [stderr] 286 | | &Tensor::TDim(ref a) => fmt_scalar!(a), [INFO] [stderr] 287 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | Ok(match *self { [INFO] [stderr] 275 | Tensor::Bool(ref a) => fmt_scalar!(a), [INFO] [stderr] 276 | Tensor::U8(ref a) => fmt_scalar!(a), [INFO] [stderr] 277 | Tensor::U16(ref a) => fmt_scalar!(a), [INFO] [stderr] 278 | Tensor::I8(ref a) => fmt_scalar!(a), [INFO] [stderr] 279 | Tensor::I16(ref a) => fmt_scalar!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:290:16 [INFO] [stderr] | [INFO] [stderr] 290 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 291 | | &Tensor::Bool(ref a) => fmt_big!(a), [INFO] [stderr] 292 | | &Tensor::U8(ref a) => fmt_big!(a), [INFO] [stderr] 293 | | &Tensor::U16(ref a) => fmt_big!(a), [INFO] [stderr] ... | [INFO] [stderr] 302 | | &Tensor::TDim(ref a) => fmt_big!(a), [INFO] [stderr] 303 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 290 | Ok(match *self { [INFO] [stderr] 291 | Tensor::Bool(ref a) => fmt_big!(a), [INFO] [stderr] 292 | Tensor::U8(ref a) => fmt_big!(a), [INFO] [stderr] 293 | Tensor::U16(ref a) => fmt_big!(a), [INFO] [stderr] 294 | Tensor::I8(ref a) => fmt_big!(a), [INFO] [stderr] 295 | Tensor::I16(ref a) => fmt_big!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:305:16 [INFO] [stderr] | [INFO] [stderr] 305 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 306 | | &Tensor::Bool(ref a) => fmt_small!(a), [INFO] [stderr] 307 | | &Tensor::U8(ref a) => fmt_small!(a), [INFO] [stderr] 308 | | &Tensor::U16(ref a) => fmt_small!(a), [INFO] [stderr] ... | [INFO] [stderr] 317 | | &Tensor::TDim(ref a) => fmt_small!(a), [INFO] [stderr] 318 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 305 | Ok(match *self { [INFO] [stderr] 306 | Tensor::Bool(ref a) => fmt_small!(a), [INFO] [stderr] 307 | Tensor::U8(ref a) => fmt_small!(a), [INFO] [stderr] 308 | Tensor::U16(ref a) => fmt_small!(a), [INFO] [stderr] 309 | Tensor::I8(ref a) => fmt_small!(a), [INFO] [stderr] 310 | Tensor::I16(ref a) => fmt_small!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | / pub fn new( [INFO] [stderr] 23 | | data_fmt: DataFormat, [INFO] [stderr] 24 | | kernel_is_hwio: bool, [INFO] [stderr] 25 | | dilations: Vec, [INFO] [stderr] ... | [INFO] [stderr] 87 | | }) [INFO] [stderr] 88 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:323:9 [INFO] [stderr] | [INFO] [stderr] 323 | / match self { [INFO] [stderr] 324 | | &Tensor::Bool(ref data) => data.map(|&a| a as u32 as f32), [INFO] [stderr] 325 | | &Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 326 | | &Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] ... | [INFO] [stderr] 335 | | &Tensor::String(_) => unimplemented!("not supported for string"), [INFO] [stderr] 336 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 323 | match *self { [INFO] [stderr] 324 | Tensor::Bool(ref data) => data.map(|&a| a as u32 as f32), [INFO] [stderr] 325 | Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 326 | Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 327 | Tensor::I8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 328 | Tensor::I16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:325:52 [INFO] [stderr] | [INFO] [stderr] 325 | &Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:326:53 [INFO] [stderr] | [INFO] [stderr] 326 | &Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:327:52 [INFO] [stderr] | [INFO] [stderr] 327 | &Tensor::I8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:328:53 [INFO] [stderr] | [INFO] [stderr] 328 | &Tensor::I16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/tensor.rs:367:49 [INFO] [stderr] | [INFO] [stderr] 367 | a.is_nan() && b.is_nan() || a == b || (b - a).abs() <= margin, [INFO] [stderr] | ^^^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/tensor.rs:367:49 [INFO] [stderr] | [INFO] [stderr] 367 | a.is_nan() && b.is_nan() || a == b || (b - a).abs() <= margin, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/tensor.rs:382:44 [INFO] [stderr] | [INFO] [stderr] 382 | pub fn to_array_view_mut<'a, D: Datum>(&'a mut self) -> TractResult> { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tensor.rs:399:40 [INFO] [stderr] | [INFO] [stderr] 399 | let content = self.dump(false).unwrap_or("Error".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "Error".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:105:61 [INFO] [stderr] | [INFO] [stderr] 105 | .slice_axis(Axis(input_shape.n_axis()), (i..(i + 1)).into()) [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(i..=i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:115:78 [INFO] [stderr] | [INFO] [stderr] 115 | *col.next().expect("geometry error in conv") = v.unwrap_or(D::zero()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(D::zero)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ops/nn/conv/fixed_params.rs:121:79 [INFO] [stderr] | [INFO] [stderr] 121 | output_subview.slice_axis_inplace(Axis(input_shape.n_axis()), (i..(i + 1)).into()); [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `(i..=i)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/unary.rs:32:48 [INFO] [stderr] | [INFO] [stderr] 32 | let dilations = conv.dilations.clone().unwrap_or(vec![1; spatial_rank]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![1; spatial_rank])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/conv/unary.rs:33:44 [INFO] [stderr] | [INFO] [stderr] 33 | let strides = conv.strides.clone().unwrap_or(vec![1; spatial_rank]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| vec![1; spatial_rank])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/ops/nn/conv/unary.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | self.kernel.shape().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 115 | &(*self.kernel.shape()).clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 115 | &[usize]::clone(self.kernel.shape()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/data_formats.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn shape(&self, shape: S) -> DataShape [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tract-core`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/nn/global_pools.rs:162:22 [INFO] [stderr] | [INFO] [stderr] 162 | fn rules<'r, 'p: 'r, 's: 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/ops/nn/layer_max.rs:28:54 [INFO] [stderr] | [INFO] [stderr] 28 | .max_by(|a, b| a.1.partial_cmp(&b.1).unwrap_or(b.0.cmp(&a.0))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| b.0.cmp(&a.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/nn/layer_max.rs:180:22 [INFO] [stderr] | [INFO] [stderr] 180 | fn rules<'r, 'p: 'r, 's: 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the loop variable `o` is only used to index `outputs`. [INFO] [stderr] --> src/ops/nn/maxpool.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | for o in 0..self.noutputs() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 104 | for in outputs.iter().take(self.noutputs()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/nn/patches.rs:176:9 [INFO] [stderr] | [INFO] [stderr] 176 | / match self { [INFO] [stderr] 177 | | &mut PatchIterator::Fast(ref mut it) => it.next(), [INFO] [stderr] 178 | | &mut PatchIterator::Safe(ref mut it) => it.next(), [INFO] [stderr] 179 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 176 | match *self { [INFO] [stderr] 177 | PatchIterator::Fast(ref mut it) => it.next(), [INFO] [stderr] 178 | PatchIterator::Safe(ref mut it) => it.next(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/reduce.rs:47:15 [INFO] [stderr] | [INFO] [stderr] 47 | fn reduce(&self, reduce: &Reduce, input: Value) -> TractResult { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ops/nn/reduce.rs:79:23 [INFO] [stderr] | [INFO] [stderr] 79 | fn reduce_t(&self, reduce: &Reduce, input: Value, f: F) -> TractResult [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:119:1 [INFO] [stderr] | [INFO] [stderr] 119 | / fn l1s_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 120 | | where [INFO] [stderr] 121 | | T: Datum + num::Signed + num::Zero, [INFO] [stderr] 122 | | { [INFO] [stderr] 123 | | v.fold(T::zero(), |acc, &v| acc + v.abs()) [INFO] [stderr] 124 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:126:1 [INFO] [stderr] | [INFO] [stderr] 126 | / fn l1u_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 127 | | where [INFO] [stderr] 128 | | T: Datum + num::Unsigned + num::Zero, [INFO] [stderr] 129 | | { [INFO] [stderr] 130 | | v.fold(T::zero(), |acc, &v| acc + v) [INFO] [stderr] 131 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:133:1 [INFO] [stderr] | [INFO] [stderr] 133 | / fn l2_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 134 | | where [INFO] [stderr] 135 | | T: Datum + AsPrimitive, [INFO] [stderr] 136 | | f64: AsPrimitive, [INFO] [stderr] ... | [INFO] [stderr] 140 | | .as_() [INFO] [stderr] 141 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:143:1 [INFO] [stderr] | [INFO] [stderr] 143 | / fn log_sum_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 144 | | where [INFO] [stderr] 145 | | T: Datum + num::Zero + num::Float, [INFO] [stderr] 146 | | { [INFO] [stderr] 147 | | v.scalar_sum().ln() [INFO] [stderr] 148 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:150:1 [INFO] [stderr] | [INFO] [stderr] 150 | / fn log_sum_exp_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 151 | | where [INFO] [stderr] 152 | | T: Datum + num::Zero + num::Float, [INFO] [stderr] 153 | | { [INFO] [stderr] 154 | | let max = v.fold(T::min_value(), |acc, &v| if acc > v { acc } else { v }); [INFO] [stderr] 155 | | max + v.fold(T::zero(), |acc, &v| acc + (v - max).exp()).ln() [INFO] [stderr] 156 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:158:1 [INFO] [stderr] | [INFO] [stderr] 158 | / fn max_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 159 | | where [INFO] [stderr] 160 | | T: Datum + num::Bounded + ::std::cmp::PartialOrd, [INFO] [stderr] 161 | | { [INFO] [stderr] 162 | | v.fold(T::min_value(), |acc, &v| if acc > v { acc } else { v }) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:165:1 [INFO] [stderr] | [INFO] [stderr] 165 | / fn mean_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 166 | | where [INFO] [stderr] 167 | | T: Datum + num::Zero + ::std::ops::Div, [INFO] [stderr] 168 | | usize: AsPrimitive, [INFO] [stderr] ... | [INFO] [stderr] 171 | | sum / count.as_() [INFO] [stderr] 172 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:174:1 [INFO] [stderr] | [INFO] [stderr] 174 | / fn min_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 175 | | where [INFO] [stderr] 176 | | T: Datum + num::Bounded + ::std::cmp::PartialOrd, [INFO] [stderr] 177 | | { [INFO] [stderr] 178 | | v.fold(T::max_value(), |acc, &v| if acc < v { acc } else { v }) [INFO] [stderr] 179 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:181:1 [INFO] [stderr] | [INFO] [stderr] 181 | / fn prod_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 182 | | where [INFO] [stderr] 183 | | T: Datum + num::One, [INFO] [stderr] 184 | | { [INFO] [stderr] 185 | | v.fold(T::one(), |acc, &v| acc * v) [INFO] [stderr] 186 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:188:1 [INFO] [stderr] | [INFO] [stderr] 188 | / fn sum_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 189 | | where [INFO] [stderr] 190 | | T: Datum + num::Zero, [INFO] [stderr] 191 | | { [INFO] [stderr] 192 | | v.scalar_sum() [INFO] [stderr] 193 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ops/nn/reduce.rs:195:1 [INFO] [stderr] | [INFO] [stderr] 195 | / fn sum_square_t<'a, T>(v: ArrayViewD<'a, T>) -> T [INFO] [stderr] 196 | | where [INFO] [stderr] 197 | | T: Datum + num::Zero + ::std::ops::Mul, [INFO] [stderr] 198 | | { [INFO] [stderr] 199 | | v.fold(T::zero(), |acc, &v| acc + v * v) [INFO] [stderr] 200 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/types.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / match self { [INFO] [stderr] 32 | | &Value::Owned(ref m) => &m, [INFO] [stderr] 33 | | &Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | match *self { [INFO] [stderr] 32 | Value::Owned(ref m) => &m, [INFO] [stderr] 33 | Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ops/types.rs:62:23 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn into_array<'a, D: ::tensor::Datum>(self) -> TractResult<::ndarray::ArrayD> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ops/types.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | / match self { [INFO] [stderr] 92 | | &Value::Owned(ref m) => &m, [INFO] [stderr] 93 | | &Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] 94 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 91 | match *self { [INFO] [stderr] 92 | Value::Owned(ref m) => &m, [INFO] [stderr] 93 | Value::Shared(ref m) => m.as_ref(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:117:37 [INFO] [stderr] | [INFO] [stderr] 117 | inputs.push(prec[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `prec[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:209:25 [INFO] [stderr] | [INFO] [stderr] 209 | inputs.push(prec[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `prec[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/plan.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | inputs.push(self.values[i.node].as_ref().unwrap()[i.slot].clone().into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `self.values[i.node].as_ref().unwrap()[i.slot].clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tensor.rs:30:24 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn super_types(&self) -> &'static [DatumType] { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/tensor.rs:75:29 [INFO] [stderr] | [INFO] [stderr] 75 | while let Some(n) = iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for n in iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tensor.rs:84:30 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn common_super_type(&self, rhs: DatumType) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / match self { [INFO] [stderr] 157 | | &Tensor::Bool(ref it) => it.shape(), [INFO] [stderr] 158 | | &Tensor::U8(ref it) => it.shape(), [INFO] [stderr] 159 | | &Tensor::U16(ref it) => it.shape(), [INFO] [stderr] ... | [INFO] [stderr] 168 | | &Tensor::String(ref it) => it.shape(), [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 156 | match *self { [INFO] [stderr] 157 | Tensor::Bool(ref it) => it.shape(), [INFO] [stderr] 158 | Tensor::U8(ref it) => it.shape(), [INFO] [stderr] 159 | Tensor::U16(ref it) => it.shape(), [INFO] [stderr] 160 | Tensor::I8(ref it) => it.shape(), [INFO] [stderr] 161 | Tensor::I16(ref it) => it.shape(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tensor.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | Tensor::TDim(ref mut it) => { [INFO] [stderr] 193 | | it.mapv_inplace(|mut e| { [INFO] [stderr] 194 | | e.reduce(); [INFO] [stderr] ... | [INFO] [stderr] 198 | | _ => (), [INFO] [stderr] 199 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 191 | if let Tensor::TDim(ref mut it) = self { [INFO] [stderr] 192 | it.mapv_inplace(|mut e| { [INFO] [stderr] 193 | e.reduce(); [INFO] [stderr] 194 | e [INFO] [stderr] 195 | }); [INFO] [stderr] 196 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:203:9 [INFO] [stderr] | [INFO] [stderr] 203 | / match self { [INFO] [stderr] 204 | | &Tensor::Bool(_) => DatumType::Bool, [INFO] [stderr] 205 | | &Tensor::U8(_) => DatumType::U8, [INFO] [stderr] 206 | | &Tensor::U16(_) => DatumType::U16, [INFO] [stderr] ... | [INFO] [stderr] 215 | | &Tensor::String(_) => DatumType::String, [INFO] [stderr] 216 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 203 | match *self { [INFO] [stderr] 204 | Tensor::Bool(_) => DatumType::Bool, [INFO] [stderr] 205 | Tensor::U8(_) => DatumType::U8, [INFO] [stderr] 206 | Tensor::U16(_) => DatumType::U16, [INFO] [stderr] 207 | Tensor::I8(_) => DatumType::I8, [INFO] [stderr] 208 | Tensor::I16(_) => DatumType::I16, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self { [INFO] [stderr] 221 | | &Tensor::Bool(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 222 | | &Tensor::U8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 223 | | &Tensor::U16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] ... | [INFO] [stderr] 232 | | &Tensor::String(_) => bail!("String is not a datum"), [INFO] [stderr] 233 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *self { [INFO] [stderr] 221 | Tensor::Bool(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 222 | Tensor::U8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 223 | Tensor::U16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 224 | Tensor::I8(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] 225 | Tensor::I16(_) => self.axis_chunks_t::(axis, size), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tensor.rs:273:12 [INFO] [stderr] | [INFO] [stderr] 273 | if self.shape().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.shape().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:274:16 [INFO] [stderr] | [INFO] [stderr] 274 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 275 | | &Tensor::Bool(ref a) => fmt_scalar!(a), [INFO] [stderr] 276 | | &Tensor::U8(ref a) => fmt_scalar!(a), [INFO] [stderr] 277 | | &Tensor::U16(ref a) => fmt_scalar!(a), [INFO] [stderr] ... | [INFO] [stderr] 286 | | &Tensor::TDim(ref a) => fmt_scalar!(a), [INFO] [stderr] 287 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 274 | Ok(match *self { [INFO] [stderr] 275 | Tensor::Bool(ref a) => fmt_scalar!(a), [INFO] [stderr] 276 | Tensor::U8(ref a) => fmt_scalar!(a), [INFO] [stderr] 277 | Tensor::U16(ref a) => fmt_scalar!(a), [INFO] [stderr] 278 | Tensor::I8(ref a) => fmt_scalar!(a), [INFO] [stderr] 279 | Tensor::I16(ref a) => fmt_scalar!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:290:16 [INFO] [stderr] | [INFO] [stderr] 290 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 291 | | &Tensor::Bool(ref a) => fmt_big!(a), [INFO] [stderr] 292 | | &Tensor::U8(ref a) => fmt_big!(a), [INFO] [stderr] 293 | | &Tensor::U16(ref a) => fmt_big!(a), [INFO] [stderr] ... | [INFO] [stderr] 302 | | &Tensor::TDim(ref a) => fmt_big!(a), [INFO] [stderr] 303 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 290 | Ok(match *self { [INFO] [stderr] 291 | Tensor::Bool(ref a) => fmt_big!(a), [INFO] [stderr] 292 | Tensor::U8(ref a) => fmt_big!(a), [INFO] [stderr] 293 | Tensor::U16(ref a) => fmt_big!(a), [INFO] [stderr] 294 | Tensor::I8(ref a) => fmt_big!(a), [INFO] [stderr] 295 | Tensor::I16(ref a) => fmt_big!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:305:16 [INFO] [stderr] | [INFO] [stderr] 305 | Ok(match self { [INFO] [stderr] | ________________^ [INFO] [stderr] 306 | | &Tensor::Bool(ref a) => fmt_small!(a), [INFO] [stderr] 307 | | &Tensor::U8(ref a) => fmt_small!(a), [INFO] [stderr] 308 | | &Tensor::U16(ref a) => fmt_small!(a), [INFO] [stderr] ... | [INFO] [stderr] 317 | | &Tensor::TDim(ref a) => fmt_small!(a), [INFO] [stderr] 318 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 305 | Ok(match *self { [INFO] [stderr] 306 | Tensor::Bool(ref a) => fmt_small!(a), [INFO] [stderr] 307 | Tensor::U8(ref a) => fmt_small!(a), [INFO] [stderr] 308 | Tensor::U16(ref a) => fmt_small!(a), [INFO] [stderr] 309 | Tensor::I8(ref a) => fmt_small!(a), [INFO] [stderr] 310 | Tensor::I16(ref a) => fmt_small!(a), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:323:9 [INFO] [stderr] | [INFO] [stderr] 323 | / match self { [INFO] [stderr] 324 | | &Tensor::Bool(ref data) => data.map(|&a| a as u32 as f32), [INFO] [stderr] 325 | | &Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 326 | | &Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] ... | [INFO] [stderr] 335 | | &Tensor::String(_) => unimplemented!("not supported for string"), [INFO] [stderr] 336 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 323 | match *self { [INFO] [stderr] 324 | Tensor::Bool(ref data) => data.map(|&a| a as u32 as f32), [INFO] [stderr] 325 | Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 326 | Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 327 | Tensor::I8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] 328 | Tensor::I16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:325:52 [INFO] [stderr] | [INFO] [stderr] 325 | &Tensor::U8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:326:53 [INFO] [stderr] | [INFO] [stderr] 326 | &Tensor::U16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:327:52 [INFO] [stderr] | [INFO] [stderr] 327 | &Tensor::I8(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/tensor.rs:328:53 [INFO] [stderr] | [INFO] [stderr] 328 | &Tensor::I16(ref data) => data.map(|&a| a as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/tensor.rs:367:49 [INFO] [stderr] | [INFO] [stderr] 367 | a.is_nan() && b.is_nan() || a == b || (b - a).abs() <= margin, [INFO] [stderr] | ^^^^^^ help: consider comparing them within some error: `(a - b).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/tensor.rs:367:49 [INFO] [stderr] | [INFO] [stderr] 367 | a.is_nan() && b.is_nan() || a == b || (b - a).abs() <= margin, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/tensor.rs:382:44 [INFO] [stderr] | [INFO] [stderr] 382 | pub fn to_array_view_mut<'a, D: Datum>(&'a mut self) -> TractResult> { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tensor.rs:399:40 [INFO] [stderr] | [INFO] [stderr] 399 | let content = self.dump(false).unwrap_or("Error".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "Error".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 572 | / tensor!( [INFO] [stderr] 573 | | bool, [INFO] [stderr] 574 | | Bool, [INFO] [stderr] 575 | | as_bool, [INFO] [stderr] ... | [INFO] [stderr] 580 | | [] [INFO] [stderr] 581 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 582 | / tensor!( [INFO] [stderr] 583 | | f16, [INFO] [stderr] 584 | | F16, [INFO] [stderr] 585 | | as_f16, [INFO] [stderr] ... | [INFO] [stderr] 590 | | [(F32, as_f32s), (F64, as_f64s)] [INFO] [stderr] 591 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 592 | / tensor!( [INFO] [stderr] 593 | | f32, [INFO] [stderr] 594 | | F32, [INFO] [stderr] 595 | | as_f32, [INFO] [stderr] ... | [INFO] [stderr] 600 | | [(F16, as_f16s), (F64, as_f64s)] [INFO] [stderr] 601 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 602 | / tensor!( [INFO] [stderr] 603 | | f64, [INFO] [stderr] 604 | | F64, [INFO] [stderr] 605 | | as_f64, [INFO] [stderr] ... | [INFO] [stderr] 610 | | [(F16, as_f16s), (F32, as_f32s)] [INFO] [stderr] 611 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 612 | tensor!(i8, I8, as_i8, as_i8s, as_i8s_mut, take_i8s, i8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 613 | / tensor!( [INFO] [stderr] 614 | | i16, [INFO] [stderr] 615 | | I16, [INFO] [stderr] 616 | | as_i16, [INFO] [stderr] ... | [INFO] [stderr] 621 | | [(I8, as_i8s)] [INFO] [stderr] 622 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 623 | / tensor!( [INFO] [stderr] 624 | | i32, [INFO] [stderr] 625 | | I32, [INFO] [stderr] 626 | | as_i32, [INFO] [stderr] ... | [INFO] [stderr] 631 | | [(TDim, as_dims), (I8, as_i8s), (I16, as_i16s)] [INFO] [stderr] 632 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 633 | / tensor!( [INFO] [stderr] 634 | | i64, [INFO] [stderr] 635 | | I64, [INFO] [stderr] 636 | | as_i64, [INFO] [stderr] ... | [INFO] [stderr] 646 | | ] [INFO] [stderr] 647 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 648 | tensor!(u8, U8, as_u8, as_u8s, as_u8s_mut, take_u8s, u8s, []); [INFO] [stderr] | -------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 649 | tensor!(u16, U16, as_u16, as_u16s, as_u16s_mut, take_u16s, u16s, []); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:456:17 [INFO] [stderr] | [INFO] [stderr] 456 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 457 | | if it.shape().len() == 0 { [INFO] [stderr] 458 | | Some(*it.iter().next().unwrap()) [INFO] [stderr] 459 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 463 | | None [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:468:17 [INFO] [stderr] | [INFO] [stderr] 468 | / if let &Tensor::$v(ref it) = self { [INFO] [stderr] 469 | | Some(it) [INFO] [stderr] 470 | | } else { [INFO] [stderr] 471 | | None [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tensor.rs:476:17 [INFO] [stderr] | [INFO] [stderr] 476 | / if let &mut Tensor::$v(ref mut it) = self { [INFO] [stderr] 477 | | Some(it) [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | None [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] ... [INFO] [stderr] 650 | / tensor!( [INFO] [stderr] 651 | | TDim, [INFO] [stderr] 652 | | TDim, [INFO] [stderr] 653 | | as_dim, [INFO] [stderr] ... | [INFO] [stderr] 658 | | [(I32, as_i32s)] [INFO] [stderr] 659 | | ); [INFO] [stderr] | |__- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tract-core`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a23c7f7038e2277611279c7e01e4a5a6370f975bea7cec16fe59aacc39d41ecf"` [INFO] running `"docker" "rm" "-f" "a23c7f7038e2277611279c7e01e4a5a6370f975bea7cec16fe59aacc39d41ecf"` [INFO] [stdout] a23c7f7038e2277611279c7e01e4a5a6370f975bea7cec16fe59aacc39d41ecf