[INFO] crate reliudp 0.1.1 is already in cache [INFO] extracting crate reliudp 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/reliudp/0.1.1 [INFO] extracting crate reliudp 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reliudp/0.1.1 [INFO] validating manifest of reliudp-0.1.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of reliudp-0.1.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing reliudp-0.1.1 [INFO] finished frobbing reliudp-0.1.1 [INFO] frobbed toml for reliudp-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/reliudp/0.1.1/Cargo.toml [INFO] started frobbing reliudp-0.1.1 [INFO] finished frobbing reliudp-0.1.1 [INFO] frobbed toml for reliudp-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reliudp/0.1.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting reliudp-0.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/reliudp/0.1.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] acd959740bd6ed30f9675f6db2486d499b875269592392ccaa14a07cb63876a5 [INFO] running `"docker" "start" "-a" "acd959740bd6ed30f9675f6db2486d499b875269592392ccaa14a07cb63876a5"` [INFO] [stderr] Checking reliudp v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/fragment_generator.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/fragment_generator.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/fragment_combiner.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | fragments.len() >= frag_total as usize + 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 201 | fragments.len() > frag_total as usize [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/fragment_combiner.rs:201:17 [INFO] [stderr] | [INFO] [stderr] 201 | fragments.len() >= frag_total as usize + 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 201 | fragments.len() > frag_total as usize [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ack.rs:105:34 [INFO] [stderr] | [INFO] [stderr] 105 | assert_eq!(ack.0.as_ref(), &[0b00000110, 0b00000011]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0110` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ack.rs:105:46 [INFO] [stderr] | [INFO] [stderr] 105 | assert_eq!(ack.0.as_ref(), &[0b00000110, 0b00000011]); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0011` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ack.rs:120:24 [INFO] [stderr] | [INFO] [stderr] 120 | let ack = Ack(vec!(0b00000110u8, 0b00000011).into_boxed_slice()); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b0000_0110u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ack.rs:120:38 [INFO] [stderr] | [INFO] [stderr] 120 | let ack = Ack(vec!(0b00000110u8, 0b00000011).into_boxed_slice()); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0011` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: function is never used: `frag_ids_received_from_ack` [INFO] [stderr] --> src/ack.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub (self) fn frag_ids_received_from_ack>(ack_bytes: I, frag_total: u8) -> impl Iterator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `into_iter` [INFO] [stderr] --> src/ack.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub (crate) fn into_iter(self, frag_total: u8) -> impl Iterator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `into_missing_iter` [INFO] [stderr] --> src/ack.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | pub (crate) fn into_missing_iter(self, frag_total: u8) -> impl Iterator { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/fragment.rs:150:104 [INFO] [stderr] | [INFO] [stderr] 150 | pub (crate) fn build_fragments_from_bytes<'a>(data: &'a [u8], seq_id: u32, frag_meta: FragmentMeta) -> Result<(Box<'a + ClonableIterator>>, u8), ()> { [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: identical conversion [INFO] [stderr] --> src/rudp.rs:284:66 [INFO] [stderr] | [INFO] [stderr] 284 | self.sent_data_tracker.send_data(self.next_local_seq_id, Arc::from(data), self.iteration_n, message_type, &self.socket); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider removing `Arc::from()`: `data` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rudp_server.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 116 | | self.remotes.iter() [INFO] [stderr] 117 | | } [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/rudp_server.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | / pub fn iter_mut<'a>(&'a mut self) -> impl Iterator { [INFO] [stderr] 120 | | self.remotes.iter_mut() [INFO] [stderr] 121 | | } [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/rudp_server.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn addresses<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 124 | | self.remotes.keys() [INFO] [stderr] 125 | | } [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/rudp_server.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn index<'a>(&'a self, index: SocketAddr) -> &'a RUdpSocket { [INFO] [stderr] 149 | | self.get(index).expect("socket_addr {} does not exist for this server instance") [INFO] [stderr] 150 | | } [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/rudp_server.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / fn index_mut<'a>(&'a mut self, index: SocketAddr) -> &'a mut RUdpSocket { [INFO] [stderr] 155 | | self.get_mut(index).expect("socket_addr {} does not exist for this server instance") [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let e =` [INFO] [stderr] --> src/fragment.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | let e = build_data_from_fragments(fragments.into_iter()).unwrap_err(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let e =` [INFO] [stderr] --> src/fragment.rs:146:5 [INFO] [stderr] | [INFO] [stderr] 146 | let e = build_data_from_fragments(fragments.into_iter()).unwrap_err(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/fragment.rs:150:104 [INFO] [stderr] | [INFO] [stderr] 150 | pub (crate) fn build_fragments_from_bytes<'a>(data: &'a [u8], seq_id: u32, frag_meta: FragmentMeta) -> Result<(Box<'a + ClonableIterator>>, u8), ()> { [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: identical conversion [INFO] [stderr] --> src/rudp.rs:284:66 [INFO] [stderr] | [INFO] [stderr] 284 | self.sent_data_tracker.send_data(self.next_local_seq_id, Arc::from(data), self.iteration_n, message_type, &self.socket); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider removing `Arc::from()`: `data` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rudp_server.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn iter<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 116 | | self.remotes.iter() [INFO] [stderr] 117 | | } [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/rudp_server.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | / pub fn iter_mut<'a>(&'a mut self) -> impl Iterator { [INFO] [stderr] 120 | | self.remotes.iter_mut() [INFO] [stderr] 121 | | } [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/rudp_server.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | / pub fn addresses<'a>(&'a self) -> impl Iterator { [INFO] [stderr] 124 | | self.remotes.keys() [INFO] [stderr] 125 | | } [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/rudp_server.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn index<'a>(&'a self, index: SocketAddr) -> &'a RUdpSocket { [INFO] [stderr] 149 | | self.get(index).expect("socket_addr {} does not exist for this server instance") [INFO] [stderr] 150 | | } [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/rudp_server.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / fn index_mut<'a>(&'a mut self, index: SocketAddr) -> &'a mut RUdpSocket { [INFO] [stderr] 155 | | self.get_mut(index).expect("socket_addr {} does not exist for this server instance") [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ack.rs:132:25 [INFO] [stderr] | [INFO] [stderr] 132 | let vec1: Vec = (0..255u8).into_iter().collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..255u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ack.rs:134:25 [INFO] [stderr] | [INFO] [stderr] 134 | let vec2: Vec = (0..255u8).into_iter().step_by(2).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..255u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/ack.rs:135:25 [INFO] [stderr] | [INFO] [stderr] 135 | let vec3: Vec = (0..255u8).into_iter().step_by(3).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..255u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.86s [INFO] running `"docker" "inspect" "acd959740bd6ed30f9675f6db2486d499b875269592392ccaa14a07cb63876a5"` [INFO] running `"docker" "rm" "-f" "acd959740bd6ed30f9675f6db2486d499b875269592392ccaa14a07cb63876a5"` [INFO] [stdout] acd959740bd6ed30f9675f6db2486d499b875269592392ccaa14a07cb63876a5