[INFO] crate clacks_tl_codegen 0.0.5 is already in cache [INFO] extracting crate clacks_tl_codegen 0.0.5 into work/ex/clippy-test-run/sources/stable/reg/clacks_tl_codegen/0.0.5 [INFO] extracting crate clacks_tl_codegen 0.0.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clacks_tl_codegen/0.0.5 [INFO] validating manifest of clacks_tl_codegen-0.0.5 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 clacks_tl_codegen-0.0.5 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 clacks_tl_codegen-0.0.5 [INFO] finished frobbing clacks_tl_codegen-0.0.5 [INFO] frobbed toml for clacks_tl_codegen-0.0.5 written to work/ex/clippy-test-run/sources/stable/reg/clacks_tl_codegen/0.0.5/Cargo.toml [INFO] started frobbing clacks_tl_codegen-0.0.5 [INFO] finished frobbing clacks_tl_codegen-0.0.5 [INFO] frobbed toml for clacks_tl_codegen-0.0.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clacks_tl_codegen/0.0.5/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 clacks_tl_codegen-0.0.5 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/clacks_tl_codegen/0.0.5:/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] c1b2d83cc8aa5ae161e7ac07b7cf04781ee5fdf1b8890c6f6d9bbb9094af0f15 [INFO] running `"docker" "start" "-a" "c1b2d83cc8aa5ae161e7ac07b7cf04781ee5fdf1b8890c6f6d9bbb9094af0f15"` [INFO] [stderr] Checking syn v0.13.11 [INFO] [stderr] Checking clacks_tl_codegen v0.0.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:169:57 [INFO] [stderr] | [INFO] [stderr] 169 | .map(|(name, ty)| Field { name: Some(name), ty: ty }) [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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/lib.rs:182:45 [INFO] [stderr] | [INFO] [stderr] 182 | ty().map(|ty| Field { name: None, ty: ty })) [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:169:57 [INFO] [stderr] | [INFO] [stderr] 169 | .map(|(name, ty)| Field { name: Some(name), ty: ty }) [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [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/lib.rs:182:45 [INFO] [stderr] | [INFO] [stderr] 182 | ty().map(|ty| Field { name: None, ty: ty })) [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [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: operator precedence can trip the unwary [INFO] [stderr] --> src/lib.rs:153:11 [INFO] [stderr] | [INFO] [stderr] 153 | ( sym(b'#').map(|_| Type::Int) | [INFO] [stderr] | ___________^ [INFO] [stderr] 154 | | sym(b'!') * ident().map(Type::TypeParameter) | [INFO] [stderr] | |______________________________________________________^ help: consider parenthesizing your expression: `sym(b'#').map(|_| Type::Int) | (sym(b'!') * ident().map(Type::TypeParameter))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib.rs:267:10 [INFO] [stderr] | [INFO] [stderr] 267 | ((((uppercase() + lowercase()).map(|(upper, lower)| upper + &lower) [INFO] [stderr] | __________^ [INFO] [stderr] 268 | | | uppercase() [INFO] [stderr] 269 | | | lowercase() [INFO] [stderr] 270 | | ) [INFO] [stderr] 271 | | ) - underscore().opt() [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:941:33 [INFO] [stderr] | [INFO] [stderr] 941 | Some(ir) => return ir.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ir.clone()` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/lib.rs:153:11 [INFO] [stderr] | [INFO] [stderr] 153 | ( sym(b'#').map(|_| Type::Int) | [INFO] [stderr] | ___________^ [INFO] [stderr] 154 | | sym(b'!') * ident().map(Type::TypeParameter) | [INFO] [stderr] | |______________________________________________________^ help: consider parenthesizing your expression: `sym(b'#').map(|_| Type::Int) | (sym(b'!') * ident().map(Type::TypeParameter))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/lib.rs:267:10 [INFO] [stderr] | [INFO] [stderr] 267 | ((((uppercase() + lowercase()).map(|(upper, lower)| upper + &lower) [INFO] [stderr] | __________^ [INFO] [stderr] 268 | | | uppercase() [INFO] [stderr] 269 | | | lowercase() [INFO] [stderr] 270 | | ) [INFO] [stderr] 271 | | ) - underscore().opt() [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:941:33 [INFO] [stderr] | [INFO] [stderr] 941 | Some(ir) => return ir.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ir.clone()` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Flagged(ref f, b, _) => Some((f, b)), [INFO] [stderr] 72 | | _ => None, [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Flagged(ref f, b, _) => Some((f, b)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &TypeParameter(..) => true, [INFO] [stderr] 80 | | _ => false, [INFO] [stderr] 81 | | } [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] 78 | match *self { [INFO] [stderr] 79 | TypeParameter(..) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lib.rs:297:21 [INFO] [stderr] | [INFO] [stderr] 297 | &mut s[..1].make_ascii_uppercase(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s[..1].make_ascii_uppercase();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lib.rs:310:18 [INFO] [stderr] | [INFO] [stderr] 310 | .unwrap_or(self.0.len().min(other.0.len())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.0.len().min(other.0.len()))` [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: large size difference between variants [INFO] [stderr] --> src/lib.rs:340:5 [INFO] [stderr] | [INFO] [stderr] 340 | AsFunction(Matched>), [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] 340 | AsFunction(Box>>), [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/lib.rs:348:31 [INFO] [stderr] | [INFO] [stderr] 348 | fn as_tokens(&self, name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:414:17 [INFO] [stderr] | [INFO] [stderr] 414 | let c = match i { [INFO] [stderr] | _________________^ [INFO] [stderr] 415 | | &Item::Constructor(ref c) => c, [INFO] [stderr] 416 | | _ => return true, [INFO] [stderr] 417 | | }; [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] 414 | let c = match *i { [INFO] [stderr] 415 | Item::Constructor(ref c) => c, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/lib.rs:454:24 [INFO] [stderr] | [INFO] [stderr] 454 | for (_, cs) in &mut constructorses { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 454 | for cs in constructorses.values_mut() { [INFO] [stderr] | ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Flagged(ref f, b, _) => Some((f, b)), [INFO] [stderr] 72 | | _ => None, [INFO] [stderr] 73 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Flagged(ref f, b, _) => Some((f, b)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | / match self { [INFO] [stderr] 79 | | &TypeParameter(..) => true, [INFO] [stderr] 80 | | _ => false, [INFO] [stderr] 81 | | } [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] 78 | match *self { [INFO] [stderr] 79 | TypeParameter(..) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/lib.rs:297:21 [INFO] [stderr] | [INFO] [stderr] 297 | &mut s[..1].make_ascii_uppercase(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `s[..1].make_ascii_uppercase();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lib.rs:310:18 [INFO] [stderr] | [INFO] [stderr] 310 | .unwrap_or(self.0.len().min(other.0.len())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.0.len().min(other.0.len()))` [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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/lib.rs:881:9 [INFO] [stderr] | [INFO] [stderr] 881 | / self.wire_kind.opt_names_slice() [INFO] [stderr] 882 | | .unwrap() [INFO] [stderr] 883 | | .iter() [INFO] [stderr] 884 | | .cloned() [INFO] [stderr] 885 | | .collect() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:889:9 [INFO] [stderr] | [INFO] [stderr] 889 | / self.wire_kind.opt_names_slice() [INFO] [stderr] 890 | | .and_then(|s| s.last()) [INFO] [stderr] 891 | | .unwrap() [INFO] [stderr] 892 | | .clone() [INFO] [stderr] | |____________________^ [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] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 889 | *self.wire_kind.opt_names_slice() [INFO] [stderr] 890 | .and_then(|s| s.last()) [INFO] [stderr] 891 | .unwrap() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/lib.rs:340:5 [INFO] [stderr] | [INFO] [stderr] 340 | AsFunction(Matched>), [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] 340 | AsFunction(Box>>), [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/lib.rs:348:31 [INFO] [stderr] | [INFO] [stderr] 348 | fn as_tokens(&self, name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:989:27 [INFO] [stderr] | [INFO] [stderr] 989 | let output_name = match &self.output { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 990 | | &Type::Named(ref v) if v.len() == 1 => v[0].as_str(), [INFO] [stderr] 991 | | _ => return false, [INFO] [stderr] 992 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 989 | let output_name = match self.output { [INFO] [stderr] 990 | Type::Named(ref v) if v.len() == 1 => v[0].as_str(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:414:17 [INFO] [stderr] | [INFO] [stderr] 414 | let c = match i { [INFO] [stderr] | _________________^ [INFO] [stderr] 415 | | &Item::Constructor(ref c) => c, [INFO] [stderr] 416 | | _ => return true, [INFO] [stderr] 417 | | }; [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] 414 | let c = match *i { [INFO] [stderr] 415 | Item::Constructor(ref c) => c, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/lib.rs:454:24 [INFO] [stderr] | [INFO] [stderr] 454 | for (_, cs) in &mut constructorses { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 454 | for cs in constructorses.values_mut() { [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/lib.rs:1097:36 [INFO] [stderr] | [INFO] [stderr] 1097 | fn as_struct_base(&self, name: &syn::Ident, matched: &str) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1153:35 [INFO] [stderr] | [INFO] [stderr] 1153 | fn as_into_boxed(&self, name: &syn::Ident) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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 block may be rewritten with the `?` operator [INFO] [stderr] --> src/lib.rs:1154:9 [INFO] [stderr] | [INFO] [stderr] 1154 | / if self.tl_id().is_none() { [INFO] [stderr] 1155 | | return None; [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.tl_id()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:1208:48 [INFO] [stderr] | [INFO] [stderr] 1208 | fn as_variant_ref_destructure(&self, name: &syn::Ident) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1237:67 [INFO] [stderr] | [INFO] [stderr] 1237 | let local_name = f.local_name().unwrap_or_else(|| field_name.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `field_name` [INFO] [stderr] | [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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/lib.rs:881:9 [INFO] [stderr] | [INFO] [stderr] 881 | / self.wire_kind.opt_names_slice() [INFO] [stderr] 882 | | .unwrap() [INFO] [stderr] 883 | | .iter() [INFO] [stderr] 884 | | .cloned() [INFO] [stderr] 885 | | .collect() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:889:9 [INFO] [stderr] | [INFO] [stderr] 889 | / self.wire_kind.opt_names_slice() [INFO] [stderr] 890 | | .and_then(|s| s.last()) [INFO] [stderr] 891 | | .unwrap() [INFO] [stderr] 892 | | .clone() [INFO] [stderr] | |____________________^ [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] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 889 | *self.wire_kind.opt_names_slice() [INFO] [stderr] 890 | .and_then(|s| s.last()) [INFO] [stderr] 891 | .unwrap() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/lib.rs:989:27 [INFO] [stderr] | [INFO] [stderr] 989 | let output_name = match &self.output { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 990 | | &Type::Named(ref v) if v.len() == 1 => v[0].as_str(), [INFO] [stderr] 991 | | _ => return false, [INFO] [stderr] 992 | | }; [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: try [INFO] [stderr] | [INFO] [stderr] 989 | let output_name = match self.output { [INFO] [stderr] 990 | Type::Named(ref v) if v.len() == 1 => v[0].as_str(), [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/lib.rs:1333:34 [INFO] [stderr] | [INFO] [stderr] 1333 | fn as_type_impl(&self, name: &syn::Ident, serialize: quote::Tokens, deserialize: Option) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1097:36 [INFO] [stderr] | [INFO] [stderr] 1097 | fn as_struct_base(&self, name: &syn::Ident, matched: &str) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:1424:35 [INFO] [stderr] | [INFO] [stderr] 1424 | fn coalesce_methods(&self) -> BTreeMap<&str, HashMap<&TypeIR, HashSet<&Constructor>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:1425:22 [INFO] [stderr] | [INFO] [stderr] 1425 | let mut map: BTreeMap<&str, HashMap<&TypeIR, HashSet<&Constructor>>> = BTreeMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:1441:44 [INFO] [stderr] | [INFO] [stderr] 1441 | fn determine_methods(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1153:35 [INFO] [stderr] | [INFO] [stderr] 1153 | fn as_into_boxed(&self, name: &syn::Ident) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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 block may be rewritten with the `?` operator [INFO] [stderr] --> src/lib.rs:1154:9 [INFO] [stderr] | [INFO] [stderr] 1154 | / if self.tl_id().is_none() { [INFO] [stderr] 1155 | | return None; [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `self.tl_id()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:1488:34 [INFO] [stderr] | [INFO] [stderr] 1488 | fn as_type_impl(&self, name: &syn::Ident, serialize: quote::Tokens, deserialize: quote::Tokens) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1208:48 [INFO] [stderr] | [INFO] [stderr] 1208 | fn as_variant_ref_destructure(&self, name: &syn::Ident) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1237:67 [INFO] [stderr] | [INFO] [stderr] 1237 | let local_name = f.local_name().unwrap_or_else(|| field_name.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `field_name` [INFO] [stderr] | [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:1554:45 [INFO] [stderr] | [INFO] [stderr] 1554 | fn as_serialize_match(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1585:47 [INFO] [stderr] | [INFO] [stderr] 1585 | fn as_deserialize_match(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1333:34 [INFO] [stderr] | [INFO] [stderr] 1333 | fn as_type_impl(&self, name: &syn::Ident, serialize: quote::Tokens, deserialize: Option) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:1424:35 [INFO] [stderr] | [INFO] [stderr] 1424 | fn coalesce_methods(&self) -> BTreeMap<&str, HashMap<&TypeIR, HashSet<&Constructor>>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:1425:22 [INFO] [stderr] | [INFO] [stderr] 1425 | let mut map: BTreeMap<&str, HashMap<&TypeIR, HashSet<&Constructor>>> = BTreeMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:1441:44 [INFO] [stderr] | [INFO] [stderr] 1441 | fn determine_methods(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1488:34 [INFO] [stderr] | [INFO] [stderr] 1488 | fn as_type_impl(&self, name: &syn::Ident, serialize: quote::Tokens, deserialize: quote::Tokens) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1554:45 [INFO] [stderr] | [INFO] [stderr] 1554 | fn as_serialize_match(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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/lib.rs:1585:47 [INFO] [stderr] | [INFO] [stderr] 1585 | fn as_deserialize_match(&self, enum_name: &syn::Ident) -> quote::Tokens { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `syn::Ident` [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] Finished dev [unoptimized + debuginfo] target(s) in 8.35s [INFO] running `"docker" "inspect" "c1b2d83cc8aa5ae161e7ac07b7cf04781ee5fdf1b8890c6f6d9bbb9094af0f15"` [INFO] running `"docker" "rm" "-f" "c1b2d83cc8aa5ae161e7ac07b7cf04781ee5fdf1b8890c6f6d9bbb9094af0f15"` [INFO] [stdout] c1b2d83cc8aa5ae161e7ac07b7cf04781ee5fdf1b8890c6f6d9bbb9094af0f15