[INFO] crate secure-session 0.3.1 is already in cache [INFO] extracting crate secure-session 0.3.1 into work/ex/clippy-test-run/sources/stable/reg/secure-session/0.3.1 [INFO] extracting crate secure-session 0.3.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/secure-session/0.3.1 [INFO] validating manifest of secure-session-0.3.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 secure-session-0.3.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 secure-session-0.3.1 [INFO] finished frobbing secure-session-0.3.1 [INFO] frobbed toml for secure-session-0.3.1 written to work/ex/clippy-test-run/sources/stable/reg/secure-session/0.3.1/Cargo.toml [INFO] started frobbing secure-session-0.3.1 [INFO] finished frobbing secure-session-0.3.1 [INFO] frobbed toml for secure-session-0.3.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/secure-session/0.3.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 secure-session-0.3.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/secure-session/0.3.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] 2ebb5ca17a589d717d7fb149f98400bc0d07c2e23041252bc9e4f5dbc6496c25 [INFO] running `"docker" "start" "-a" "2ebb5ca17a589d717d7fb149f98400bc0d07c2e23041252bc9e4f5dbc6496c25"` [INFO] [stderr] Checking cookie v0.10.1 [INFO] [stderr] Checking iron v0.6.0 [INFO] [stderr] Checking iron-test v0.6.0 [INFO] [stderr] Checking secure-session v0.3.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/session.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | aead_key: aead_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `aead_key` [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/session.rs:170:13 [INFO] [stderr] | [INFO] [stderr] 170 | aead_key: aead_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `aead_key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | manager: manager, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `manager` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | handler: handler, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `handler` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | expires: expires, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `expires` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | manager: manager, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `manager` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/session.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | aead_key: aead_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `aead_key` [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/session.rs:170:13 [INFO] [stderr] | [INFO] [stderr] 170 | aead_key: aead_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `aead_key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | manager: manager, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `manager` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | handler: handler, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `handler` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | expires: expires, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `expires` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | manager: manager, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `manager` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/middleware.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:76:33 [INFO] [stderr] | [INFO] [stderr] 76 | pub const SESSION_COOKIE_NAME: &'static str = "ss"; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/session.rs:72:27 [INFO] [stderr] | [INFO] [stderr] 72 | fn aead(&self, nonce: &[u8; 8]) -> ChaCha20Poly1305 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 8]` [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `nonce[..8].clone_from_slice(&bytes[..8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:92:18 [INFO] [stderr] | [INFO] [stderr] 92 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `tag[..16].clone_from_slice(&bytes[8..(16 + 8)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:95:18 [INFO] [stderr] | [INFO] [stderr] 95 | for i in 0..(bytes.len() - 24) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `ciphertext[..(bytes.len() - 24)].clone_from_slice(&bytes[24..((bytes.len() - 24) + 24)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:125:18 [INFO] [stderr] | [INFO] [stderr] 125 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `plaintext[..16].clone_from_slice(&padding[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..session_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `plaintext[16..(session_bytes.len() + 16)].clone_from_slice(&session_bytes[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:140:18 [INFO] [stderr] | [INFO] [stderr] 140 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `transport[..8].clone_from_slice(&nonce[..8])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:143:18 [INFO] [stderr] | [INFO] [stderr] 143 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[8..(16 + 8)].clone_from_slice(&tag[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:146:18 [INFO] [stderr] | [INFO] [stderr] 146 | for i in 0..ciphertext.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `transport[24..(ciphertext.len() + 24)].clone_from_slice(&ciphertext[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:201:18 [INFO] [stderr] | [INFO] [stderr] 201 | for i in 0..12 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `nonce[..12].clone_from_slice(&bytes[..12])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `tag[..16].clone_from_slice(&bytes[12..(16 + 12)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:207:18 [INFO] [stderr] | [INFO] [stderr] 207 | for i in 0..(bytes.len() - 28) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `ciphertext[..(bytes.len() - 28)].clone_from_slice(&bytes[28..((bytes.len() - 28) + 28)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:237:18 [INFO] [stderr] | [INFO] [stderr] 237 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `plaintext[..16].clone_from_slice(&padding[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:240:18 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..session_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `plaintext[16..(session_bytes.len() + 16)].clone_from_slice(&session_bytes[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:252:18 [INFO] [stderr] | [INFO] [stderr] 252 | for i in 0..12 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[..12].clone_from_slice(&nonce[..12])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:255:18 [INFO] [stderr] | [INFO] [stderr] 255 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[12..(16 + 12)].clone_from_slice(&tag[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:258:18 [INFO] [stderr] | [INFO] [stderr] 258 | for i in 0..ciphertext.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `transport[28..(ciphertext.len() + 28)].clone_from_slice(&ciphertext[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/session.rs:294:21 [INFO] [stderr] | [INFO] [stderr] 294 | / match manager.deserialize(bytes) { [INFO] [stderr] 295 | | ok @ Ok(_) => return ok, [INFO] [stderr] 296 | | Err(_) => (), [INFO] [stderr] 297 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let ok @ Ok(_) = manager.deserialize(bytes) { return ok }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/middleware.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | / raw_cookie [INFO] [stderr] 46 | | .0 [INFO] [stderr] 47 | | .iter() [INFO] [stderr] 48 | | .filter_map(|c| { [INFO] [stderr] ... | [INFO] [stderr] 58 | | .first() [INFO] [stderr] 59 | | .map(|c| c.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 45 | raw_cookie [INFO] [stderr] 46 | .0 [INFO] [stderr] 47 | .iter() [INFO] [stderr] 48 | .filter_map(|c| { [INFO] [stderr] 49 | Cookie::parse_encoded(c.clone()) [INFO] [stderr] 50 | .ok() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/middleware.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match self.extract_session_cookie(&request) [INFO] [stderr] 72 | | // TODO ? error out on deserialization failure and remove cookie since it is invalid [INFO] [stderr] 73 | | .and_then(|c| self.manager.deserialize(&c).ok()) [INFO] [stderr] 74 | | .and_then(|s| { [INFO] [stderr] ... | [INFO] [stderr] 84 | | None => (), [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 71 | if let Some(value) = self.extract_session_cookie(&request) [INFO] [stderr] 72 | // TODO ? error out on deserialization failure and remove cookie since it is invalid [INFO] [stderr] 73 | .and_then(|c| self.manager.deserialize(&c).ok()) [INFO] [stderr] 74 | .and_then(|s| { [INFO] [stderr] 75 | match s.expires { [INFO] [stderr] 76 | Some(expires) if expires > Utc::now() => s.value, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `middleware::SessionConfigBuilder` [INFO] [stderr] --> src/middleware.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | / pub fn new() -> Self { [INFO] [stderr] 199 | | SessionConfigBuilder { config: SessionConfig::default() } [INFO] [stderr] 200 | | } [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] 192 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> benches/bench.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | expires: expires, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `expires` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/lib.rs:76:33 [INFO] [stderr] | [INFO] [stderr] 76 | pub const SESSION_COOKIE_NAME: &'static str = "ss"; [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/session.rs:72:27 [INFO] [stderr] | [INFO] [stderr] 72 | fn aead(&self, nonce: &[u8; 8]) -> ChaCha20Poly1305 { [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `[u8; 8]` [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: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `nonce[..8].clone_from_slice(&bytes[..8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:92:18 [INFO] [stderr] | [INFO] [stderr] 92 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `tag[..16].clone_from_slice(&bytes[8..(16 + 8)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:95:18 [INFO] [stderr] | [INFO] [stderr] 95 | for i in 0..(bytes.len() - 24) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `ciphertext[..(bytes.len() - 24)].clone_from_slice(&bytes[24..((bytes.len() - 24) + 24)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:125:18 [INFO] [stderr] | [INFO] [stderr] 125 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `plaintext[..16].clone_from_slice(&padding[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | for i in 0..session_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `plaintext[16..(session_bytes.len() + 16)].clone_from_slice(&session_bytes[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:140:18 [INFO] [stderr] | [INFO] [stderr] 140 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `transport[..8].clone_from_slice(&nonce[..8])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:143:18 [INFO] [stderr] | [INFO] [stderr] 143 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[8..(16 + 8)].clone_from_slice(&tag[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:146:18 [INFO] [stderr] | [INFO] [stderr] 146 | for i in 0..ciphertext.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `transport[24..(ciphertext.len() + 24)].clone_from_slice(&ciphertext[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:201:18 [INFO] [stderr] | [INFO] [stderr] 201 | for i in 0..12 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `nonce[..12].clone_from_slice(&bytes[..12])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `tag[..16].clone_from_slice(&bytes[12..(16 + 12)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:207:18 [INFO] [stderr] | [INFO] [stderr] 207 | for i in 0..(bytes.len() - 28) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `ciphertext[..(bytes.len() - 28)].clone_from_slice(&bytes[28..((bytes.len() - 28) + 28)])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:237:18 [INFO] [stderr] | [INFO] [stderr] 237 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `plaintext[..16].clone_from_slice(&padding[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:240:18 [INFO] [stderr] | [INFO] [stderr] 240 | for i in 0..session_bytes.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `plaintext[16..(session_bytes.len() + 16)].clone_from_slice(&session_bytes[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:252:18 [INFO] [stderr] | [INFO] [stderr] 252 | for i in 0..12 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[..12].clone_from_slice(&nonce[..12])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:255:18 [INFO] [stderr] | [INFO] [stderr] 255 | for i in 0..16 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `transport[12..(16 + 12)].clone_from_slice(&tag[..16])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/session.rs:258:18 [INFO] [stderr] | [INFO] [stderr] 258 | for i in 0..ciphertext.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `transport[28..(ciphertext.len() + 28)].clone_from_slice(&ciphertext[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/session.rs:294:21 [INFO] [stderr] | [INFO] [stderr] 294 | / match manager.deserialize(bytes) { [INFO] [stderr] 295 | | ok @ Ok(_) => return ok, [INFO] [stderr] 296 | | Err(_) => (), [INFO] [stderr] 297 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let ok @ Ok(_) = manager.deserialize(bytes) { return ok }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/middleware.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | / raw_cookie [INFO] [stderr] 46 | | .0 [INFO] [stderr] 47 | | .iter() [INFO] [stderr] 48 | | .filter_map(|c| { [INFO] [stderr] ... | [INFO] [stderr] 58 | | .first() [INFO] [stderr] 59 | | .map(|c| c.clone()) [INFO] [stderr] | |___________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 45 | raw_cookie [INFO] [stderr] 46 | .0 [INFO] [stderr] 47 | .iter() [INFO] [stderr] 48 | .filter_map(|c| { [INFO] [stderr] 49 | Cookie::parse_encoded(c.clone()) [INFO] [stderr] 50 | .ok() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/middleware.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match self.extract_session_cookie(&request) [INFO] [stderr] 72 | | // TODO ? error out on deserialization failure and remove cookie since it is invalid [INFO] [stderr] 73 | | .and_then(|c| self.manager.deserialize(&c).ok()) [INFO] [stderr] 74 | | .and_then(|s| { [INFO] [stderr] ... | [INFO] [stderr] 84 | | None => (), [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 71 | if let Some(value) = self.extract_session_cookie(&request) [INFO] [stderr] 72 | // TODO ? error out on deserialization failure and remove cookie since it is invalid [INFO] [stderr] 73 | .and_then(|c| self.manager.deserialize(&c).ok()) [INFO] [stderr] 74 | .and_then(|s| { [INFO] [stderr] 75 | match s.expires { [INFO] [stderr] 76 | Some(expires) if expires > Utc::now() => s.value, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `middleware::SessionConfigBuilder` [INFO] [stderr] --> src/middleware.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | / pub fn new() -> Self { [INFO] [stderr] 199 | | SessionConfigBuilder { config: SessionConfig::default() } [INFO] [stderr] 200 | | } [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] 192 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/bench.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `secure-session`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "2ebb5ca17a589d717d7fb149f98400bc0d07c2e23041252bc9e4f5dbc6496c25"` [INFO] running `"docker" "rm" "-f" "2ebb5ca17a589d717d7fb149f98400bc0d07c2e23041252bc9e4f5dbc6496c25"` [INFO] [stdout] 2ebb5ca17a589d717d7fb149f98400bc0d07c2e23041252bc9e4f5dbc6496c25