[INFO] crate seax_util 0.1.2 is already in cache [INFO] extracting crate seax_util 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/seax_util/0.1.2 [INFO] extracting crate seax_util 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/seax_util/0.1.2 [INFO] validating manifest of seax_util-0.1.2 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 seax_util-0.1.2 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 seax_util-0.1.2 [INFO] finished frobbing seax_util-0.1.2 [INFO] frobbed toml for seax_util-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/seax_util/0.1.2/Cargo.toml [INFO] started frobbing seax_util-0.1.2 [INFO] finished frobbing seax_util-0.1.2 [INFO] frobbed toml for seax_util-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/seax_util/0.1.2/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 seax_util-0.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/seax_util/0.1.2:/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] dbe4b51177ff0f190762ae59381bf416b4495cf3783e38d683b11d5376fa389e [INFO] running `"docker" "start" "-a" "dbe4b51177ff0f190762ae59381bf416b4495cf3783e38d683b11d5376fa389e"` [INFO] [stderr] Checking seax_util v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/compiler_tools/ast.rs:9:20 [INFO] [stderr] | [INFO] [stderr] 9 | pub const INDENT: &'static str = "\t"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused import: `ByteOrder` [INFO] [stderr] --> src/bytecode/mod.rs:127:23 [INFO] [stderr] | [INFO] [stderr] 127 | use self::byteorder::{ByteOrder, BigEndian, ReadBytesExt, WriteBytesExt}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list/mod.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Nil => None, [INFO] [stderr] 144 | | &Cons(ref it,_) => Some(it) [INFO] [stderr] 145 | | } [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] 142 | match *self { [INFO] [stderr] 143 | Nil => None, [INFO] [stderr] 144 | Cons(ref it,_) => Some(it) [INFO] [stderr] | [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/list/mod.rs:364:5 [INFO] [stderr] | [INFO] [stderr] 364 | / pub fn tail<'a>(&'a self) -> &'a Self { [INFO] [stderr] 365 | | match self { [INFO] [stderr] 366 | | &Cons(_, ref cdr) => cdr, [INFO] [stderr] 367 | | nil @ &Nil => nil [INFO] [stderr] 368 | | } [INFO] [stderr] 369 | | } [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/list/mod.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn iter<'a>(&'a self) -> ListIterator<'a, T> { [INFO] [stderr] 376 | | ListIterator{current: self} [INFO] [stderr] 377 | | } [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/list/mod.rs:433:5 [INFO] [stderr] | [INFO] [stderr] 433 | / pub fn get<'a>(&'a self, index: u64) -> Option<&'a T> { [INFO] [stderr] 434 | | match (0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | | &Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | | &Nil => None [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | [INFO] [stderr] 439 | | } [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/list/mod.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | / match (0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | | &Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | | &Nil => None [INFO] [stderr] 437 | | } [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] 434 | match *(0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | Nil => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list/mod.rs:562:9 [INFO] [stderr] | [INFO] [stderr] 562 | / match self.current { [INFO] [stderr] 563 | | &Cons(ref head, ref tail) => { [INFO] [stderr] 564 | | self.current = &(**tail); [INFO] [stderr] 565 | | Some(head) [INFO] [stderr] 566 | | }, [INFO] [stderr] 567 | | &Nil => None [INFO] [stderr] 568 | | } [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] 562 | match *self.current { [INFO] [stderr] 563 | Cons(ref head, ref tail) => { [INFO] [stderr] 564 | self.current = &(**tail); [INFO] [stderr] 565 | Some(head) [INFO] [stderr] 566 | }, [INFO] [stderr] 567 | Nil => None [INFO] [stderr] | [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/list/mod.rs:601:5 [INFO] [stderr] | [INFO] [stderr] 601 | / fn index<'a>(&'a self, _index: usize) -> &'a T { [INFO] [stderr] 602 | | &self[_index as u64] [INFO] [stderr] 603 | | } [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/list/mod.rs:629:5 [INFO] [stderr] | [INFO] [stderr] 629 | / fn index<'a>(&'a self, _index: u64) -> &'a T { [INFO] [stderr] 630 | | self.get(_index) [INFO] [stderr] 631 | | .expect(&format!("list index {} out of range", _index)) [INFO] [stderr] 632 | | } [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: use of `expect` followed by a function call [INFO] [stderr] --> src/list/mod.rs:631:14 [INFO] [stderr] | [INFO] [stderr] 631 | .expect(&format!("list index {} out of range", _index)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("list index {} out of range", _index))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [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/list/mod.rs:663:5 [INFO] [stderr] | [INFO] [stderr] 663 | / fn index<'a>(&'a self, _index: i64) -> &'a T { [INFO] [stderr] 664 | | if _index < 0 { [INFO] [stderr] 665 | | panic!("attempt to access negative index {}", _index) [INFO] [stderr] 666 | | } else { [INFO] [stderr] 667 | | &self[_index as u64] [INFO] [stderr] 668 | | } [INFO] [stderr] 669 | | } [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/list/mod.rs:700:5 [INFO] [stderr] | [INFO] [stderr] 700 | / fn index<'a>(&'a self, _index: isize) -> &'a T { [INFO] [stderr] 701 | | if _index < 0 { [INFO] [stderr] 702 | | panic!("attempt to access negative index {}", _index) [INFO] [stderr] 703 | | } else { [INFO] [stderr] 704 | | &self[_index as u64] [INFO] [stderr] 705 | | } [INFO] [stderr] 706 | | } [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/cell/mod.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &AtomCell(atom) => write!(f, "{:?}", atom), [INFO] [stderr] 56 | | &ListCell(ref list) => write!(f, "{:?}", list), [INFO] [stderr] 57 | | &InstCell(inst) => write!(f, "{:?}", inst) [INFO] [stderr] 58 | | } [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] 54 | match *self { [INFO] [stderr] 55 | AtomCell(atom) => write!(f, "{:?}", atom), [INFO] [stderr] 56 | ListCell(ref list) => write!(f, "{:?}", list), [INFO] [stderr] 57 | InstCell(inst) => write!(f, "{:?}", inst) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cell/mod.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self { [INFO] [stderr] 93 | | &Atom::UInt(value) => write!(f, "{}", value), [INFO] [stderr] 94 | | &Atom::SInt(value) => write!(f, "{}", value), [INFO] [stderr] 95 | | &Atom::Float(value) => write!(f, "{}", value), [INFO] [stderr] 96 | | &Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] 97 | | } [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] 92 | match *self { [INFO] [stderr] 93 | Atom::UInt(value) => write!(f, "{}", value), [INFO] [stderr] 94 | Atom::SInt(value) => write!(f, "{}", value), [INFO] [stderr] 95 | Atom::Float(value) => write!(f, "{}", value), [INFO] [stderr] 96 | Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cell/mod.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match self { [INFO] [stderr] 108 | | &Atom::UInt(value) => write!(f, "{:?}u", value), [INFO] [stderr] 109 | | &Atom::SInt(value) => write!(f, "{:?}", value), [INFO] [stderr] 110 | | &Atom::Float(value) => write!(f, "{:?}f", value), [INFO] [stderr] 111 | | &Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] 112 | | } [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] 107 | match *self { [INFO] [stderr] 108 | Atom::UInt(value) => write!(f, "{:?}u", value), [INFO] [stderr] 109 | Atom::SInt(value) => write!(f, "{:?}", value), [INFO] [stderr] 110 | Atom::Float(value) => write!(f, "{:?}f", value), [INFO] [stderr] 111 | Atom::Char(value) => write!(f, "'{}'", value), [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/bytecode/mod.rs:205:22 [INFO] [stderr] | [INFO] [stderr] 205 | fn decode_inst(byte: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/bytecode/mod.rs:207:14 [INFO] [stderr] | [INFO] [stderr] 207 | b if b >= BYTE_NIL && b < RESERVED_START => [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because BYTE_NIL is the minimum value for this type, this comparison is always true [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bytecode/mod.rs:302:38 [INFO] [stderr] | [INFO] [stderr] 302 | fn decode_const(&mut self, byte: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/bytecode/mod.rs:325:30 [INFO] [stderr] | [INFO] [stderr] 325 | .ok_or(String::from("Could not read character.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Could not read character."))` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/bytecode/mod.rs:347:21 [INFO] [stderr] | [INFO] [stderr] 347 | car.ok_or(String::from("EOF while decoding CONS cell")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("EOF while decoding CONS cell"))` [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/bytecode/mod.rs:361:49 [INFO] [stderr] | [INFO] [stderr] 361 | .and_then(|cdr| cdr.ok_or( [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 362 | | String::from("EOF while decoding CONS")) ) [INFO] [stderr] | |________________________________________________________________________^ help: try this: `ok_or_else(|| String::from("EOF while decoding CONS"))` [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 should consider deriving a `Default` implementation for `compiler_tools::forktable::ForkTable<'a, K, V>` [INFO] [stderr] --> src/compiler_tools/forktable.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn new() -> ForkTable<'a, K,V> { [INFO] [stderr] 376 | | ForkTable { [INFO] [stderr] 377 | | table: HashMap::new(), [INFO] [stderr] 378 | | whiteouts: HashSet::new(), [INFO] [stderr] ... | [INFO] [stderr] 381 | | } [INFO] [stderr] 382 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/compiler_tools/forktable.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | .or(self.parent [INFO] [stderr] | __________________^ [INFO] [stderr] 95 | | .map_or(None, |ref parent| parent.get(key)) [INFO] [stderr] 96 | | ) [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] 94 | .or_else(|| self.parent [INFO] [stderr] 95 | .map_or(None, |ref parent| parent.get(key))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/compiler_tools/forktable.rs:94:21 [INFO] [stderr] | [INFO] [stderr] 94 | .or(self.parent [INFO] [stderr] | _____________________^ [INFO] [stderr] 95 | | .map_or(None, |ref parent| parent.get(key)) [INFO] [stderr] | |___________________________________________________________________^ help: try using and_then instead: `self.parent.and_then(|ref parent| parent.get(key))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_or_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [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/compiler_tools/forktable.rs:390:5 [INFO] [stderr] | [INFO] [stderr] 390 | / pub fn values<'b>(&'b self) -> Values<'b, K, V> { [INFO] [stderr] 391 | | self.table.values() [INFO] [stderr] 392 | | } [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/compiler_tools/forktable.rs:400:5 [INFO] [stderr] | [INFO] [stderr] 400 | / pub fn keys<'b>(&'b self) -> Keys<'b, K, V>{ [INFO] [stderr] 401 | | self.table.keys() [INFO] [stderr] 402 | | } [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler_tools/forktable.rs:511:35 [INFO] [stderr] | [INFO] [stderr] 511 | .map(|&( lvl, idx )| (lvl.clone(), idx.clone()) ) [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `lvl` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler_tools/forktable.rs:511:48 [INFO] [stderr] | [INFO] [stderr] 511 | .map(|&( lvl, idx )| (lvl.clone(), idx.clone()) ) [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `idx` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `seax_util`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/compiler_tools/ast.rs:9:20 [INFO] [stderr] | [INFO] [stderr] 9 | pub const INDENT: &'static str = "\t"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused import: `ByteOrder` [INFO] [stderr] --> src/bytecode/mod.rs:127:23 [INFO] [stderr] | [INFO] [stderr] 127 | use self::byteorder::{ByteOrder, BigEndian, ReadBytesExt, WriteBytesExt}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list/mod.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | / match self { [INFO] [stderr] 143 | | &Nil => None, [INFO] [stderr] 144 | | &Cons(ref it,_) => Some(it) [INFO] [stderr] 145 | | } [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] 142 | match *self { [INFO] [stderr] 143 | Nil => None, [INFO] [stderr] 144 | Cons(ref it,_) => Some(it) [INFO] [stderr] | [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/list/mod.rs:364:5 [INFO] [stderr] | [INFO] [stderr] 364 | / pub fn tail<'a>(&'a self) -> &'a Self { [INFO] [stderr] 365 | | match self { [INFO] [stderr] 366 | | &Cons(_, ref cdr) => cdr, [INFO] [stderr] 367 | | nil @ &Nil => nil [INFO] [stderr] 368 | | } [INFO] [stderr] 369 | | } [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/list/mod.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn iter<'a>(&'a self) -> ListIterator<'a, T> { [INFO] [stderr] 376 | | ListIterator{current: self} [INFO] [stderr] 377 | | } [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/list/mod.rs:433:5 [INFO] [stderr] | [INFO] [stderr] 433 | / pub fn get<'a>(&'a self, index: u64) -> Option<&'a T> { [INFO] [stderr] 434 | | match (0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | | &Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | | &Nil => None [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | [INFO] [stderr] 439 | | } [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/list/mod.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | / match (0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | | &Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | | &Nil => None [INFO] [stderr] 437 | | } [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] 434 | match *(0..index).fold(self, |acc, _| acc.tail()) { [INFO] [stderr] 435 | Cons(ref car,_) => Some(car), [INFO] [stderr] 436 | Nil => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/list/mod.rs:562:9 [INFO] [stderr] | [INFO] [stderr] 562 | / match self.current { [INFO] [stderr] 563 | | &Cons(ref head, ref tail) => { [INFO] [stderr] 564 | | self.current = &(**tail); [INFO] [stderr] 565 | | Some(head) [INFO] [stderr] 566 | | }, [INFO] [stderr] 567 | | &Nil => None [INFO] [stderr] 568 | | } [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] 562 | match *self.current { [INFO] [stderr] 563 | Cons(ref head, ref tail) => { [INFO] [stderr] 564 | self.current = &(**tail); [INFO] [stderr] 565 | Some(head) [INFO] [stderr] 566 | }, [INFO] [stderr] 567 | Nil => None [INFO] [stderr] | [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/list/mod.rs:601:5 [INFO] [stderr] | [INFO] [stderr] 601 | / fn index<'a>(&'a self, _index: usize) -> &'a T { [INFO] [stderr] 602 | | &self[_index as u64] [INFO] [stderr] 603 | | } [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/list/mod.rs:629:5 [INFO] [stderr] | [INFO] [stderr] 629 | / fn index<'a>(&'a self, _index: u64) -> &'a T { [INFO] [stderr] 630 | | self.get(_index) [INFO] [stderr] 631 | | .expect(&format!("list index {} out of range", _index)) [INFO] [stderr] 632 | | } [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: use of `expect` followed by a function call [INFO] [stderr] --> src/list/mod.rs:631:14 [INFO] [stderr] | [INFO] [stderr] 631 | .expect(&format!("list index {} out of range", _index)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("list index {} out of range", _index))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [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/list/mod.rs:663:5 [INFO] [stderr] | [INFO] [stderr] 663 | / fn index<'a>(&'a self, _index: i64) -> &'a T { [INFO] [stderr] 664 | | if _index < 0 { [INFO] [stderr] 665 | | panic!("attempt to access negative index {}", _index) [INFO] [stderr] 666 | | } else { [INFO] [stderr] 667 | | &self[_index as u64] [INFO] [stderr] 668 | | } [INFO] [stderr] 669 | | } [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/list/mod.rs:700:5 [INFO] [stderr] | [INFO] [stderr] 700 | / fn index<'a>(&'a self, _index: isize) -> &'a T { [INFO] [stderr] 701 | | if _index < 0 { [INFO] [stderr] 702 | | panic!("attempt to access negative index {}", _index) [INFO] [stderr] 703 | | } else { [INFO] [stderr] 704 | | &self[_index as u64] [INFO] [stderr] 705 | | } [INFO] [stderr] 706 | | } [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/cell/mod.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &AtomCell(atom) => write!(f, "{:?}", atom), [INFO] [stderr] 56 | | &ListCell(ref list) => write!(f, "{:?}", list), [INFO] [stderr] 57 | | &InstCell(inst) => write!(f, "{:?}", inst) [INFO] [stderr] 58 | | } [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] 54 | match *self { [INFO] [stderr] 55 | AtomCell(atom) => write!(f, "{:?}", atom), [INFO] [stderr] 56 | ListCell(ref list) => write!(f, "{:?}", list), [INFO] [stderr] 57 | InstCell(inst) => write!(f, "{:?}", inst) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cell/mod.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | / match self { [INFO] [stderr] 93 | | &Atom::UInt(value) => write!(f, "{}", value), [INFO] [stderr] 94 | | &Atom::SInt(value) => write!(f, "{}", value), [INFO] [stderr] 95 | | &Atom::Float(value) => write!(f, "{}", value), [INFO] [stderr] 96 | | &Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] 97 | | } [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] 92 | match *self { [INFO] [stderr] 93 | Atom::UInt(value) => write!(f, "{}", value), [INFO] [stderr] 94 | Atom::SInt(value) => write!(f, "{}", value), [INFO] [stderr] 95 | Atom::Float(value) => write!(f, "{}", value), [INFO] [stderr] 96 | Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cell/mod.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | / match self { [INFO] [stderr] 108 | | &Atom::UInt(value) => write!(f, "{:?}u", value), [INFO] [stderr] 109 | | &Atom::SInt(value) => write!(f, "{:?}", value), [INFO] [stderr] 110 | | &Atom::Float(value) => write!(f, "{:?}f", value), [INFO] [stderr] 111 | | &Atom::Char(value) => write!(f, "'{}'", value), [INFO] [stderr] 112 | | } [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] 107 | match *self { [INFO] [stderr] 108 | Atom::UInt(value) => write!(f, "{:?}u", value), [INFO] [stderr] 109 | Atom::SInt(value) => write!(f, "{:?}", value), [INFO] [stderr] 110 | Atom::Float(value) => write!(f, "{:?}f", value), [INFO] [stderr] 111 | Atom::Char(value) => write!(f, "'{}'", value), [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/bytecode/mod.rs:205:22 [INFO] [stderr] | [INFO] [stderr] 205 | fn decode_inst(byte: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/bytecode/mod.rs:207:14 [INFO] [stderr] | [INFO] [stderr] 207 | b if b >= BYTE_NIL && b < RESERVED_START => [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because BYTE_NIL is the minimum value for this type, this comparison is always true [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bytecode/mod.rs:302:38 [INFO] [stderr] | [INFO] [stderr] 302 | fn decode_const(&mut self, byte: &u8) -> Result { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/bytecode/mod.rs:325:30 [INFO] [stderr] | [INFO] [stderr] 325 | .ok_or(String::from("Could not read character.")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Could not read character."))` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/bytecode/mod.rs:347:21 [INFO] [stderr] | [INFO] [stderr] 347 | car.ok_or(String::from("EOF while decoding CONS cell")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("EOF while decoding CONS cell"))` [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/bytecode/mod.rs:361:49 [INFO] [stderr] | [INFO] [stderr] 361 | .and_then(|cdr| cdr.ok_or( [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 362 | | String::from("EOF while decoding CONS")) ) [INFO] [stderr] | |________________________________________________________________________^ help: try this: `ok_or_else(|| String::from("EOF while decoding CONS"))` [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 should consider deriving a `Default` implementation for `compiler_tools::forktable::ForkTable<'a, K, V>` [INFO] [stderr] --> src/compiler_tools/forktable.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / pub fn new() -> ForkTable<'a, K,V> { [INFO] [stderr] 376 | | ForkTable { [INFO] [stderr] 377 | | table: HashMap::new(), [INFO] [stderr] 378 | | whiteouts: HashSet::new(), [INFO] [stderr] ... | [INFO] [stderr] 381 | | } [INFO] [stderr] 382 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 29 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/compiler_tools/forktable.rs:94:18 [INFO] [stderr] | [INFO] [stderr] 94 | .or(self.parent [INFO] [stderr] | __________________^ [INFO] [stderr] 95 | | .map_or(None, |ref parent| parent.get(key)) [INFO] [stderr] 96 | | ) [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] 94 | .or_else(|| self.parent [INFO] [stderr] 95 | .map_or(None, |ref parent| parent.get(key))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `map_or(None, f)` on an Option value. This can be done more directly by calling `and_then(f)` instead [INFO] [stderr] --> src/compiler_tools/forktable.rs:94:21 [INFO] [stderr] | [INFO] [stderr] 94 | .or(self.parent [INFO] [stderr] | _____________________^ [INFO] [stderr] 95 | | .map_or(None, |ref parent| parent.get(key)) [INFO] [stderr] | |___________________________________________________________________^ help: try using and_then instead: `self.parent.and_then(|ref parent| parent.get(key))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_or_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none [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/compiler_tools/forktable.rs:390:5 [INFO] [stderr] | [INFO] [stderr] 390 | / pub fn values<'b>(&'b self) -> Values<'b, K, V> { [INFO] [stderr] 391 | | self.table.values() [INFO] [stderr] 392 | | } [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/compiler_tools/forktable.rs:400:5 [INFO] [stderr] | [INFO] [stderr] 400 | / pub fn keys<'b>(&'b self) -> Keys<'b, K, V>{ [INFO] [stderr] 401 | | self.table.keys() [INFO] [stderr] 402 | | } [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler_tools/forktable.rs:511:35 [INFO] [stderr] | [INFO] [stderr] 511 | .map(|&( lvl, idx )| (lvl.clone(), idx.clone()) ) [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `lvl` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/compiler_tools/forktable.rs:511:48 [INFO] [stderr] | [INFO] [stderr] 511 | .map(|&( lvl, idx )| (lvl.clone(), idx.clone()) ) [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `idx` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `seax_util`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "dbe4b51177ff0f190762ae59381bf416b4495cf3783e38d683b11d5376fa389e"` [INFO] running `"docker" "rm" "-f" "dbe4b51177ff0f190762ae59381bf416b4495cf3783e38d683b11d5376fa389e"` [INFO] [stdout] dbe4b51177ff0f190762ae59381bf416b4495cf3783e38d683b11d5376fa389e