[INFO] crate rusqbin 0.2.3 is already in cache [INFO] extracting crate rusqbin 0.2.3 into work/ex/clippy-test-run/sources/stable/reg/rusqbin/0.2.3 [INFO] extracting crate rusqbin 0.2.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rusqbin/0.2.3 [INFO] validating manifest of rusqbin-0.2.3 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 rusqbin-0.2.3 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 rusqbin-0.2.3 [INFO] finished frobbing rusqbin-0.2.3 [INFO] frobbed toml for rusqbin-0.2.3 written to work/ex/clippy-test-run/sources/stable/reg/rusqbin/0.2.3/Cargo.toml [INFO] started frobbing rusqbin-0.2.3 [INFO] finished frobbing rusqbin-0.2.3 [INFO] frobbed toml for rusqbin-0.2.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rusqbin/0.2.3/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 rusqbin-0.2.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rusqbin/0.2.3:/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] ca040e45c06fc73897c3719870289590e12b53b9fbdc661f446456cfe2785c1b [INFO] running `"docker" "start" "-a" "ca040e45c06fc73897c3719870289590e12b53b9fbdc661f446456cfe2785c1b"` [INFO] [stderr] Checking rusqbin v0.2.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server.rs:320:13 [INFO] [stderr] | [INFO] [stderr] 320 | content_length: content_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_length` [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/server.rs:321:13 [INFO] [stderr] | [INFO] [stderr] 321 | content_type: content_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_type` [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/server.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/server.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/server.rs:325:13 [INFO] [stderr] | [INFO] [stderr] 325 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/server.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | headers: headers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `headers` [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/server.rs:339:13 [INFO] [stderr] | [INFO] [stderr] 339 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [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/server.rs:340:13 [INFO] [stderr] | [INFO] [stderr] 340 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/server.rs:320:13 [INFO] [stderr] | [INFO] [stderr] 320 | content_length: content_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_length` [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/server.rs:321:13 [INFO] [stderr] | [INFO] [stderr] 321 | content_type: content_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_type` [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/server.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/server.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/server.rs:325:13 [INFO] [stderr] | [INFO] [stderr] 325 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/server.rs:326:13 [INFO] [stderr] | [INFO] [stderr] 326 | headers: headers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `headers` [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/server.rs:339:13 [INFO] [stderr] | [INFO] [stderr] 339 | address: address, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `address` [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/server.rs:340:13 [INFO] [stderr] | [INFO] [stderr] 340 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/models.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | const ID_REGEXP: &'static str = [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/server.rs:97:30 [INFO] [stderr] | [INFO] [stderr] 97 | Box::new((self.insert_request(req))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/server.rs:97:30 [INFO] [stderr] | [INFO] [stderr] 97 | Box::new((self.insert_request(req))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/models.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | const ID_REGEXP: &'static str = [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/server.rs:97:30 [INFO] [stderr] | [INFO] [stderr] 97 | Box::new((self.insert_request(req))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/server.rs:97:30 [INFO] [stderr] | [INFO] [stderr] 97 | Box::new((self.insert_request(req))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `models::IdExtractor` [INFO] [stderr] --> src/models.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> IdExtractor { [INFO] [stderr] 80 | | match Regex::new(ID_REGEXP) { [INFO] [stderr] 81 | | Ok(regex) => IdExtractor(regex), [INFO] [stderr] 82 | | _ => unreachable!(), // yo the regexp is perfect. [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 71 | impl Default for models::IdExtractor { [INFO] [stderr] 72 | fn default() -> Self { [INFO] [stderr] 73 | Self::new() [INFO] [stderr] 74 | } [INFO] [stderr] 75 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `storage::InMemoryBins` [INFO] [stderr] --> src/storage.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn new() -> InMemoryBins { [INFO] [stderr] 56 | | InMemoryBins { bins: HashMap::new() } [INFO] [stderr] 57 | | } [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] 50 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/server.rs:234:57 [INFO] [stderr] | [INFO] [stderr] 234 | let now_millis = (now.sec as i64 * 1000) + (now.nsec as i64 / 1000 / 1000); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(now.nsec)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/server.rs:299:37 [INFO] [stderr] | [INFO] [stderr] 299 | headers.entry(k.to_owned()).or_insert(vec![]).push(v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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 `or_insert` followed by a function call [INFO] [stderr] --> src/server.rs:310:41 [INFO] [stderr] | [INFO] [stderr] 310 | query_map.entry(k.into_owned()).or_insert(vec![]).push( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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: passing a unit value to a function [INFO] [stderr] --> src/server.rs:365:12 [INFO] [stderr] | [INFO] [stderr] 365 | Ok(server.run_until(shutdown_signal)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 365 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/server.rs:374:26 [INFO] [stderr] | [INFO] [stderr] 374 | Ok(ref s) if s.len() == 0 => Ok(None), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `models::IdExtractor` [INFO] [stderr] --> src/models.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> IdExtractor { [INFO] [stderr] 80 | | match Regex::new(ID_REGEXP) { [INFO] [stderr] 81 | | Ok(regex) => IdExtractor(regex), [INFO] [stderr] 82 | | _ => unreachable!(), // yo the regexp is perfect. [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 71 | impl Default for models::IdExtractor { [INFO] [stderr] 72 | fn default() -> Self { [INFO] [stderr] 73 | Self::new() [INFO] [stderr] 74 | } [INFO] [stderr] 75 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &PoisonedLock => write!(f, "Poisoned lock error"), [INFO] [stderr] 79 | | &UnforeseenError => write!(f, "Unforeseen error"), [INFO] [stderr] 80 | | &FromUtf8Error => write!(f, "From UTF8 error"), [INFO] [stderr] ... | [INFO] [stderr] 87 | | &ServerError(ref e) => e.fmt(f), [INFO] [stderr] 88 | | } [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] 77 | match *self { [INFO] [stderr] 78 | PoisonedLock => write!(f, "Poisoned lock error"), [INFO] [stderr] 79 | UnforeseenError => write!(f, "Unforeseen error"), [INFO] [stderr] 80 | FromUtf8Error => write!(f, "From UTF8 error"), [INFO] [stderr] 81 | HyperError => write!(f, "Hyper error"), [INFO] [stderr] 82 | AddressParsingErr(ref e) => e.fmt(f), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &PoisonedLock => "Poisoned Lock", [INFO] [stderr] 97 | | &UnforeseenError => "Unforeseen Error", [INFO] [stderr] 98 | | &FromUtf8Error => "UTF8 Conversion Error", [INFO] [stderr] ... | [INFO] [stderr] 105 | | &ServerError(ref e) => e.description(), [INFO] [stderr] 106 | | } [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] 95 | match *self { [INFO] [stderr] 96 | PoisonedLock => "Poisoned Lock", [INFO] [stderr] 97 | UnforeseenError => "Unforeseen Error", [INFO] [stderr] 98 | FromUtf8Error => "UTF8 Conversion Error", [INFO] [stderr] 99 | HyperError => "Hyper Error", [INFO] [stderr] 100 | AddressParsingErr(ref e) => e.description(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &JsonEncodingError(ref e) => Some(e), [INFO] [stderr] 113 | | &IOError(ref e) => Some(e), [INFO] [stderr] 114 | | &RegexError(ref e) => Some(e), [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => None, [INFO] [stderr] 119 | | } [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] 111 | match *self { [INFO] [stderr] 112 | JsonEncodingError(ref e) => Some(e), [INFO] [stderr] 113 | IOError(ref e) => Some(e), [INFO] [stderr] 114 | RegexError(ref e) => Some(e), [INFO] [stderr] 115 | UrlParseError(ref e) => Some(e), [INFO] [stderr] 116 | ServerError(ref e) => Some(e), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `storage::InMemoryBins` [INFO] [stderr] --> src/storage.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / pub fn new() -> InMemoryBins { [INFO] [stderr] 56 | | InMemoryBins { bins: HashMap::new() } [INFO] [stderr] 57 | | } [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] 50 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/storage.rs:207:20 [INFO] [stderr] | [INFO] [stderr] 207 | assert_eq!(summaries.get(&bin.id).unwrap().request_count, 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&summaries[&bin.id]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/server.rs:234:57 [INFO] [stderr] | [INFO] [stderr] 234 | let now_millis = (now.sec as i64 * 1000) + (now.nsec as i64 / 1000 / 1000); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i64::from(now.nsec)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/server.rs:299:37 [INFO] [stderr] | [INFO] [stderr] 299 | headers.entry(k.to_owned()).or_insert(vec![]).push(v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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 `or_insert` followed by a function call [INFO] [stderr] --> src/server.rs:310:41 [INFO] [stderr] | [INFO] [stderr] 310 | query_map.entry(k.into_owned()).or_insert(vec![]).push( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [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: passing a unit value to a function [INFO] [stderr] --> src/server.rs:365:12 [INFO] [stderr] | [INFO] [stderr] 365 | Ok(server.run_until(shutdown_signal)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 365 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/server.rs:374:26 [INFO] [stderr] | [INFO] [stderr] 374 | Ok(ref s) if s.len() == 0 => Ok(None), [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &PoisonedLock => write!(f, "Poisoned lock error"), [INFO] [stderr] 79 | | &UnforeseenError => write!(f, "Unforeseen error"), [INFO] [stderr] 80 | | &FromUtf8Error => write!(f, "From UTF8 error"), [INFO] [stderr] ... | [INFO] [stderr] 87 | | &ServerError(ref e) => e.fmt(f), [INFO] [stderr] 88 | | } [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] 77 | match *self { [INFO] [stderr] 78 | PoisonedLock => write!(f, "Poisoned lock error"), [INFO] [stderr] 79 | UnforeseenError => write!(f, "Unforeseen error"), [INFO] [stderr] 80 | FromUtf8Error => write!(f, "From UTF8 error"), [INFO] [stderr] 81 | HyperError => write!(f, "Hyper error"), [INFO] [stderr] 82 | AddressParsingErr(ref e) => e.fmt(f), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &PoisonedLock => "Poisoned Lock", [INFO] [stderr] 97 | | &UnforeseenError => "Unforeseen Error", [INFO] [stderr] 98 | | &FromUtf8Error => "UTF8 Conversion Error", [INFO] [stderr] ... | [INFO] [stderr] 105 | | &ServerError(ref e) => e.description(), [INFO] [stderr] 106 | | } [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] 95 | match *self { [INFO] [stderr] 96 | PoisonedLock => "Poisoned Lock", [INFO] [stderr] 97 | UnforeseenError => "Unforeseen Error", [INFO] [stderr] 98 | FromUtf8Error => "UTF8 Conversion Error", [INFO] [stderr] 99 | HyperError => "Hyper Error", [INFO] [stderr] 100 | AddressParsingErr(ref e) => e.description(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match self { [INFO] [stderr] 112 | | &JsonEncodingError(ref e) => Some(e), [INFO] [stderr] 113 | | &IOError(ref e) => Some(e), [INFO] [stderr] 114 | | &RegexError(ref e) => Some(e), [INFO] [stderr] ... | [INFO] [stderr] 118 | | _ => None, [INFO] [stderr] 119 | | } [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] 111 | match *self { [INFO] [stderr] 112 | JsonEncodingError(ref e) => Some(e), [INFO] [stderr] 113 | IOError(ref e) => Some(e), [INFO] [stderr] 114 | RegexError(ref e) => Some(e), [INFO] [stderr] 115 | UrlParseError(ref e) => Some(e), [INFO] [stderr] 116 | ServerError(ref e) => Some(e), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:18:26 [INFO] [stderr] | [INFO] [stderr] 18 | const DEFAULT_PORT_STR: &'static str = "9999"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:20:15 [INFO] [stderr] | [INFO] [stderr] 20 | const GREET: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded unit return type [INFO] [stderr] --> tests/common/mod.rs:164:36 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn run_with_server(test: T) -> () [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/main.rs:80:8 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(s.run()?) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 80 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> tests/common/mod.rs:164:36 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn run_with_server(test: T) -> () [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/common/mod.rs:117:19 [INFO] [stderr] | [INFO] [stderr] 117 | requests: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ServerRequest]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/common/mod.rs:125:40 [INFO] [stderr] | [INFO] [stderr] 125 | let req_body = r.body.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `r.body` [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: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> tests/common/mod.rs:174:34 [INFO] [stderr] | [INFO] [stderr] 174 | let still_running = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> tests/common/mod.rs:214:22 [INFO] [stderr] | [INFO] [stderr] 214 | .map_err(|e| TestingError::HyperError(e)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TestingError::HyperError` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> tests/internal_integration_tests.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | let ref bins = test_env.server.storage.lock().unwrap().get_bin_summaries(); [INFO] [stderr] | ----^^^^^^^^--------------------------------------------------------------- help: try: `let bins = &test_env.server.storage.lock().unwrap().get_bin_summaries();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> tests/internal_integration_tests.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | let ref storage = test_env.server.storage.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------------- help: try: `let storage = &test_env.server.storage.lock().unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> tests/internal_integration_tests.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | let ref storage = test_env.server.storage.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------------- help: try: `let storage = &test_env.server.storage.lock().unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> tests/internal_integration_tests.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | let ref storage = test_env.server.storage.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------------- help: try: `let storage = &test_env.server.storage.lock().unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> tests/internal_integration_tests.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | let ref storage = test_env.server.storage.lock().unwrap(); [INFO] [stderr] | ----^^^^^^^^^^^------------------------------------------- help: try: `let storage = &test_env.server.storage.lock().unwrap();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/common/mod.rs:117:19 [INFO] [stderr] | [INFO] [stderr] 117 | requests: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ServerRequest]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/common/mod.rs:125:40 [INFO] [stderr] | [INFO] [stderr] 125 | let req_body = r.body.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `r.body` [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: Consider using an AtomicBool instead of a Mutex here. If you just want the locking behaviour and not the internal type, consider using Mutex<()>. [INFO] [stderr] --> tests/common/mod.rs:174:34 [INFO] [stderr] | [INFO] [stderr] 174 | let still_running = Arc::new(Mutex::new(true)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mutex_atomic)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutex_atomic [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> tests/common/mod.rs:214:22 [INFO] [stderr] | [INFO] [stderr] 214 | .map_err(|e| TestingError::HyperError(e)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `TestingError::HyperError` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:18:26 [INFO] [stderr] | [INFO] [stderr] 18 | const DEFAULT_PORT_STR: &'static str = "9999"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:20:15 [INFO] [stderr] | [INFO] [stderr] 20 | const GREET: &'static str = r#" [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: passing a unit value to a function [INFO] [stderr] --> src/main.rs:80:8 [INFO] [stderr] | [INFO] [stderr] 80 | Ok(s.run()?) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 80 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 24.64s [INFO] running `"docker" "inspect" "ca040e45c06fc73897c3719870289590e12b53b9fbdc661f446456cfe2785c1b"` [INFO] running `"docker" "rm" "-f" "ca040e45c06fc73897c3719870289590e12b53b9fbdc661f446456cfe2785c1b"` [INFO] [stdout] ca040e45c06fc73897c3719870289590e12b53b9fbdc661f446456cfe2785c1b