[INFO] updating cached repository junjihashimoto/rust-reversi [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/junjihashimoto/rust-reversi [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/junjihashimoto/rust-reversi" "work/ex/clippy-test-run/sources/stable/gh/junjihashimoto/rust-reversi"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/junjihashimoto/rust-reversi'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/junjihashimoto/rust-reversi" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/junjihashimoto/rust-reversi"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/junjihashimoto/rust-reversi'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 40e235ad9d05065909d35faf0d94ca1489cc6648 [INFO] sha for GitHub repo junjihashimoto/rust-reversi: 40e235ad9d05065909d35faf0d94ca1489cc6648 [INFO] validating manifest of junjihashimoto/rust-reversi 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 junjihashimoto/rust-reversi 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 junjihashimoto/rust-reversi [INFO] finished frobbing junjihashimoto/rust-reversi [INFO] frobbed toml for junjihashimoto/rust-reversi written to work/ex/clippy-test-run/sources/stable/gh/junjihashimoto/rust-reversi/Cargo.toml [INFO] started frobbing junjihashimoto/rust-reversi [INFO] finished frobbing junjihashimoto/rust-reversi [INFO] frobbed toml for junjihashimoto/rust-reversi written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/junjihashimoto/rust-reversi/Cargo.toml [INFO] crate junjihashimoto/rust-reversi has a lockfile. skipping [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 junjihashimoto/rust-reversi against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/junjihashimoto/rust-reversi:/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] 6e27e8eb0f2cf856d9099967cdba0664a3160f372ad7fefbcf568f6156052738 [INFO] running `"docker" "start" "-a" "6e27e8eb0f2cf856d9099967cdba0664a3160f372ad7fefbcf568f6156052738"` [INFO] [stderr] Checking reversi v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> reversi.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | / match self { [INFO] [stderr] 20 | | &Disk::White => write!(f, "o"), [INFO] [stderr] 21 | | &Disk::Black => write!(f, "x") [INFO] [stderr] 22 | | } [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] 19 | match *self { [INFO] [stderr] 20 | Disk::White => write!(f, "o"), [INFO] [stderr] 21 | Disk::Black => write!(f, "x") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:26:18 [INFO] [stderr] | [INFO] [stderr] 26 | fn show_disk (d: &Option<&Disk>) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option<&Disk>` [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] --> reversi.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / match d { [INFO] [stderr] 28 | | &Option::None => " ", [INFO] [stderr] 29 | | &Option::Some(&Disk::White) => "o", [INFO] [stderr] 30 | | &Option::Some(&Disk::Black) => "x" [INFO] [stderr] 31 | | } [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] 27 | match *d { [INFO] [stderr] 28 | Option::None => " ", [INFO] [stderr] 29 | Option::Some(&Disk::White) => "o", [INFO] [stderr] 30 | Option::Some(&Disk::Black) => "x" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:34:27 [INFO] [stderr] | [INFO] [stderr] 34 | fn show_disk_on_board (p: &Pos, board: &Board) -> &'static str { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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: manual implementation of an assign operation [INFO] [stderr] --> reversi.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | init = init + "|"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `init += "|"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> reversi.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | init = init + show_disk_on_board (&p,board); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `init += show_disk_on_board (&p,board)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:51:24 [INFO] [stderr] | [INFO] [stderr] 51 | fn value(b: &Board, d: &Disk) -> Value { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | fn all_(cond: F,i: &Vec

) -> bool [INFO] [stderr] | ^^^^^^^ help: change this to: `&[P]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> reversi.rs:57:7 [INFO] [stderr] | [INFO] [stderr] 57 | i.into_iter().fold(true, |sum, v| sum & cond(v)) [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:61:15 [INFO] [stderr] | [INFO] [stderr] 61 | fn between(a: &Pos,b: &Pos) -> Vec { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:61:23 [INFO] [stderr] | [INFO] [stderr] 61 | fn between(a: &Pos,b: &Pos) -> Vec { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:72:32 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:72:44 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:72:56 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:76:16 [INFO] [stderr] | [INFO] [stderr] 76 | fn ndisk(disk: &Disk) -> Disk { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | / match disk { [INFO] [stderr] 78 | | &Disk::White => Disk::Black, [INFO] [stderr] 79 | | &Disk::Black => Disk::White [INFO] [stderr] 80 | | } [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] 77 | match *disk { [INFO] [stderr] 78 | Disk::White => Disk::Black, [INFO] [stderr] 79 | Disk::Black => Disk::White [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:93:11 [INFO] [stderr] | [INFO] [stderr] 93 | fn mix(a: &Vec<&Pos>, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&Pos]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:93:26 [INFO] [stderr] | [INFO] [stderr] 93 | fn mix(a: &Vec<&Pos>, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[Pos]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:111:30 [INFO] [stderr] | [INFO] [stderr] 111 | fn next(board: &Board, disk: &Disk) -> Vec { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | fn put(board: &Board,disk: &Disk,pos: &Pos) -> Board { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:125:39 [INFO] [stderr] | [INFO] [stderr] 125 | fn put(board: &Board,disk: &Disk,pos: &Pos) -> Board { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:145:32 [INFO] [stderr] | [INFO] [stderr] 145 | fn nboard(board: &Board, disk: &Disk) -> Vec<(Value,Pos,Board)> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:149:27 [INFO] [stderr] | [INFO] [stderr] 149 | (value(&nb2,disk),n.clone(),nb) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*n` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:154:31 [INFO] [stderr] | [INFO] [stderr] 154 | fn maxmin(board: &Board,disk: &Disk) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:158:48 [INFO] [stderr] | [INFO] [stderr] 158 | Option::Some(&(_,p,_)) => Option::Some(p.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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] --> reversi.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | fn main_(disk: &Disk,board: &Board){ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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: length comparison to zero [INFO] [stderr] --> reversi.rs:167:8 [INFO] [stderr] | [INFO] [stderr] 167 | if p_.len() == 0 && p__.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p_.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: length comparison to zero [INFO] [stderr] --> reversi.rs:167:26 [INFO] [stderr] | [INFO] [stderr] 167 | if p_.len() == 0 && p__.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p__.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] --> reversi.rs:176:20 [INFO] [stderr] | [INFO] [stderr] 176 | let b = if p_.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p_.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] --> reversi.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | / match self { [INFO] [stderr] 20 | | &Disk::White => write!(f, "o"), [INFO] [stderr] 21 | | &Disk::Black => write!(f, "x") [INFO] [stderr] 22 | | } [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] 19 | match *self { [INFO] [stderr] 20 | Disk::White => write!(f, "o"), [INFO] [stderr] 21 | Disk::Black => write!(f, "x") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:26:18 [INFO] [stderr] | [INFO] [stderr] 26 | fn show_disk (d: &Option<&Disk>) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option<&Disk>` [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] --> reversi.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / match d { [INFO] [stderr] 28 | | &Option::None => " ", [INFO] [stderr] 29 | | &Option::Some(&Disk::White) => "o", [INFO] [stderr] 30 | | &Option::Some(&Disk::Black) => "x" [INFO] [stderr] 31 | | } [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] 27 | match *d { [INFO] [stderr] 28 | Option::None => " ", [INFO] [stderr] 29 | Option::Some(&Disk::White) => "o", [INFO] [stderr] 30 | Option::Some(&Disk::Black) => "x" [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:34:27 [INFO] [stderr] | [INFO] [stderr] 34 | fn show_disk_on_board (p: &Pos, board: &Board) -> &'static str { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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: manual implementation of an assign operation [INFO] [stderr] --> reversi.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | init = init + "|"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `init += "|"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> reversi.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | init = init + show_disk_on_board (&p,board); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `init += show_disk_on_board (&p,board)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:51:24 [INFO] [stderr] | [INFO] [stderr] 51 | fn value(b: &Board, d: &Disk) -> Value { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | fn all_(cond: F,i: &Vec

) -> bool [INFO] [stderr] | ^^^^^^^ help: change this to: `&[P]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> reversi.rs:57:7 [INFO] [stderr] | [INFO] [stderr] 57 | i.into_iter().fold(true, |sum, v| sum & cond(v)) [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:61:15 [INFO] [stderr] | [INFO] [stderr] 61 | fn between(a: &Pos,b: &Pos) -> Vec { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:61:23 [INFO] [stderr] | [INFO] [stderr] 61 | fn between(a: &Pos,b: &Pos) -> Vec { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:72:32 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:72:44 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:72:56 [INFO] [stderr] | [INFO] [stderr] 72 | fn allsame(board: &Board,disk: &Disk,posa: &Pos, posb: &Pos) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:76:16 [INFO] [stderr] | [INFO] [stderr] 76 | fn ndisk(disk: &Disk) -> Disk { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:77:5 [INFO] [stderr] | [INFO] [stderr] 77 | / match disk { [INFO] [stderr] 78 | | &Disk::White => Disk::Black, [INFO] [stderr] 79 | | &Disk::Black => Disk::White [INFO] [stderr] 80 | | } [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] 77 | match *disk { [INFO] [stderr] 78 | Disk::White => Disk::Black, [INFO] [stderr] 79 | Disk::Black => Disk::White [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:93:11 [INFO] [stderr] | [INFO] [stderr] 93 | fn mix(a: &Vec<&Pos>, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&Pos]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> reversi.rs:93:26 [INFO] [stderr] | [INFO] [stderr] 93 | fn mix(a: &Vec<&Pos>, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[Pos]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:111:30 [INFO] [stderr] | [INFO] [stderr] 111 | fn next(board: &Board, disk: &Disk) -> Vec { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | fn put(board: &Board,disk: &Disk,pos: &Pos) -> Board { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:125:39 [INFO] [stderr] | [INFO] [stderr] 125 | fn put(board: &Board,disk: &Disk,pos: &Pos) -> Board { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `Pos` [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] --> reversi.rs:145:32 [INFO] [stderr] | [INFO] [stderr] 145 | fn nboard(board: &Board, disk: &Disk) -> Vec<(Value,Pos,Board)> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:149:27 [INFO] [stderr] | [INFO] [stderr] 149 | (value(&nb2,disk),n.clone(),nb) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*n` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> reversi.rs:154:31 [INFO] [stderr] | [INFO] [stderr] 154 | fn maxmin(board: &Board,disk: &Disk) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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] --> reversi.rs:158:48 [INFO] [stderr] | [INFO] [stderr] 158 | Option::Some(&(_,p,_)) => Option::Some(p.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `p` [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] --> reversi.rs:162:16 [INFO] [stderr] | [INFO] [stderr] 162 | fn main_(disk: &Disk,board: &Board){ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Disk` [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: length comparison to zero [INFO] [stderr] --> reversi.rs:167:8 [INFO] [stderr] | [INFO] [stderr] 167 | if p_.len() == 0 && p__.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p_.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: length comparison to zero [INFO] [stderr] --> reversi.rs:167:26 [INFO] [stderr] | [INFO] [stderr] 167 | if p_.len() == 0 && p__.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p__.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] --> reversi.rs:176:20 [INFO] [stderr] | [INFO] [stderr] 176 | let b = if p_.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `p_.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] Finished dev [unoptimized + debuginfo] target(s) in 1.18s [INFO] running `"docker" "inspect" "6e27e8eb0f2cf856d9099967cdba0664a3160f372ad7fefbcf568f6156052738"` [INFO] running `"docker" "rm" "-f" "6e27e8eb0f2cf856d9099967cdba0664a3160f372ad7fefbcf568f6156052738"` [INFO] [stdout] 6e27e8eb0f2cf856d9099967cdba0664a3160f372ad7fefbcf568f6156052738