[INFO] crate rusty_pipe 0.1.5 is already in cache [INFO] extracting crate rusty_pipe 0.1.5 into work/ex/clippy-test-run/sources/stable/reg/rusty_pipe/0.1.5 [INFO] extracting crate rusty_pipe 0.1.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rusty_pipe/0.1.5 [INFO] validating manifest of rusty_pipe-0.1.5 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 rusty_pipe-0.1.5 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 rusty_pipe-0.1.5 [INFO] finished frobbing rusty_pipe-0.1.5 [INFO] frobbed toml for rusty_pipe-0.1.5 written to work/ex/clippy-test-run/sources/stable/reg/rusty_pipe/0.1.5/Cargo.toml [INFO] started frobbing rusty_pipe-0.1.5 [INFO] finished frobbing rusty_pipe-0.1.5 [INFO] frobbed toml for rusty_pipe-0.1.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rusty_pipe/0.1.5/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 rusty_pipe-0.1.5 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/rusty_pipe/0.1.5:/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] e16a5e62d63890b42f443d5b7a8534d6a3239f212d6a2be0a0238f127dafd361 [INFO] running `"docker" "start" "-a" "e16a5e62d63890b42f443d5b7a8534d6a3239f212d6a2be0a0238f127dafd361"` [INFO] [stderr] Checking rusty_pipe v0.1.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/nfa.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [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/route_recognizer/nfa.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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/route_recognizer/nfa.rs:189:16 [INFO] [stderr] | [INFO] [stderr] 189 | Match{ state: state, captures: captures } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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/route_recognizer/nfa.rs:189:30 [INFO] [stderr] | [INFO] [stderr] 189 | Match{ state: state, captures: captures } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `captures` [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/route_recognizer/lib.rs:122:16 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [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/route_recognizer/lib.rs:122:34 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/route_recognizer/lib.rs:122:50 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `route_id` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/nfa.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:24 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::redundant_field_names)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/nfa.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/nfa.rs:189:16 [INFO] [stderr] | [INFO] [stderr] 189 | Match{ state: state, captures: captures } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/nfa.rs:189:30 [INFO] [stderr] | [INFO] [stderr] 189 | Match{ state: state, captures: captures } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `captures` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/lib.rs:122:16 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/lib.rs:122:34 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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] error: redundant field names in struct initialization [INFO] [stderr] --> src/route_recognizer/lib.rs:122:50 [INFO] [stderr] | [INFO] [stderr] 122 | Match{ handler: handler, params: params, route_id: route_id } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `route_id` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:23:23 [INFO] [stderr] | [INFO] [stderr] 23 | let bit = 1 << val - 64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:37:23 [INFO] [stderr] | [INFO] [stderr] 37 | let bit = 1 << val - 64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:72:19 [INFO] [stderr] | [INFO] [stderr] 72 | Ascii(1 << val - 64, 0, false) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:84:31 [INFO] [stderr] | [INFO] [stderr] 84 | Ascii(u64::MAX ^ (1 << val - 64), u64::MAX, true) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] error: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:23:23 [INFO] [stderr] | [INFO] [stderr] 23 | let bit = 1 << val - 64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] note: lint level defined here [INFO] [stderr] --> src/lib.rs:1:24 [INFO] [stderr] | [INFO] [stderr] 1 | #![cfg_attr(test, deny(warnings))] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = note: #[deny(clippy::precedence)] implied by #[deny(warnings)] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] error: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:37:23 [INFO] [stderr] | [INFO] [stderr] 37 | let bit = 1 << val - 64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] error: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:72:19 [INFO] [stderr] | [INFO] [stderr] 72 | Ascii(1 << val - 64, 0, false) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] error: operator precedence can trip the unwary [INFO] [stderr] --> src/route_recognizer/nfa.rs:84:31 [INFO] [stderr] | [INFO] [stderr] 84 | Ascii(u64::MAX ^ (1 << val - 64), u64::MAX, true) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider parenthesizing your expression: `1 << (val - 64)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: method is never used: `valid` [INFO] [stderr] --> src/route_recognizer/nfa.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn valid(string: &str) -> CharacterClass { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `invalid` [INFO] [stderr] --> src/route_recognizer/nfa.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn invalid(string: &str) -> CharacterClass { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `str_to_set` [INFO] [stderr] --> src/route_recognizer/nfa.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | fn str_to_set(string: &str) -> CharSet { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/route_recognizer/nfa.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | self.high_mask = self.high_mask | bit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.high_mask |= bit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/route_recognizer/nfa.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | self.low_mask = self.low_mask | bit; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.low_mask |= bit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/route_recognizer/nfa.rs:256:21 [INFO] [stderr] | [INFO] [stderr] 256 | fn process_char<'a>(&self, threads: Vec, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `route_recognizer::lib::Params` [INFO] [stderr] --> src/route_recognizer/lib.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | / pub fn new() -> Params { [INFO] [stderr] 64 | | Params{ map: BTreeMap::new() } [INFO] [stderr] 65 | | } [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] 58 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/route_recognizer/lib.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | / pub fn iter<'a>(&'a self) -> Iter<'a> { [INFO] [stderr] 76 | | Iter(self.map.iter()) [INFO] [stderr] 77 | | } [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: length comparison to zero [INFO] [stderr] --> src/route_recognizer/lib.rs:138:12 [INFO] [stderr] | [INFO] [stderr] 138 | if route.len() != 0 && route.as_bytes()[0] == b'/' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!route.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/route_recognizer/lib.rs:151:16 [INFO] [stderr] | [INFO] [stderr] 151 | if segment.len() > 0 && segment.as_bytes()[0] == b':' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!segment.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/route_recognizer/lib.rs:155:23 [INFO] [stderr] | [INFO] [stderr] 155 | } else if segment.len() > 0 && segment.as_bytes()[0] == b'*' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!segment.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/route_recognizer/lib.rs:171:12 [INFO] [stderr] | [INFO] [stderr] 171 | if path.len() != 0 && path.as_bytes()[0] == b'/' { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/route_recognizer/lib.rs:189:31 [INFO] [stderr] | [INFO] [stderr] 189 | let handler = self.handlers.get(&nfa_match.state).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.handlers[&nfa_match.state]` [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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/router.rs:44:38 [INFO] [stderr] | [INFO] [stderr] 44 | -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `&String` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/router.rs:46:14 [INFO] [stderr] | [INFO] [stderr] 46 | .or(self.wildcard.recognize(path).ok()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.wildcard.recognize(path).ok())` [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: you should consider adding a `Default` implementation for `router::Router` [INFO] [stderr] --> src/router.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn new() -> Router { [INFO] [stderr] 70 | | Router { [INFO] [stderr] 71 | | inner: Arc::new(RouterInner { [INFO] [stderr] 72 | | routers: HashMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [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] 62 | impl Default for router::Router { [INFO] [stderr] 63 | fn default() -> Self { [INFO] [stderr] 64 | Self::new() [INFO] [stderr] 65 | } [INFO] [stderr] 66 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/router.rs:113:14 [INFO] [stderr] | [INFO] [stderr] 113 | .or_insert(Recognizer::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Recognizer::new)` [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: this call to `as_ref` does nothing [INFO] [stderr] --> src/router.rs:115:23 [INFO] [stderr] | [INFO] [stderr] 115 | self.route_id(route_id.as_ref(), glob.as_ref()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `route_id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/router.rs:118:14 [INFO] [stderr] | [INFO] [stderr] 118 | .or_insert(Recognizer::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Recognizer::new)` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/router.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | let ref mut route_ids = inner.route_ids; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^------------------- help: try: `let route_ids = &mut inner.route_ids;` [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: this call to `as_ref` does nothing [INFO] [stderr] --> src/router.rs:174:23 [INFO] [stderr] | [INFO] [stderr] 174 | self.route_id(route_id.as_ref(), glob.as_ref()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `route_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/router.rs:179:38 [INFO] [stderr] | [INFO] [stderr] 179 | -> Option>> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Handler` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/router.rs:181:14 [INFO] [stderr] | [INFO] [stderr] 181 | .or(self.inner.wildcard.recognize(path).ok()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| self.inner.wildcard.recognize(path).ok())` [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: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/router.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | self.inner.routers.get(method).map(|router| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 194 | || if let Some(_) = router.recognize(path).ok() { [INFO] [stderr] 195 | || options.push(method.clone()); [INFO] [stderr] 196 | || } [INFO] [stderr] 197 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(router) = self.inner.routers.get(method) { ... }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/router.rs:194:17 [INFO] [stderr] | [INFO] [stderr] 194 | / if let Some(_) = router.recognize(path).ok() { [INFO] [stderr] 195 | | options.push(method.clone()); [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::if_let_some_result)] on by default [INFO] [stderr] = help: Consider matching on `Ok(_)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/router.rs:194:24 [INFO] [stderr] | [INFO] [stderr] 194 | if let Some(_) = router.recognize(path).ok() { [INFO] [stderr] | _________________- ^^^^^^^ [INFO] [stderr] 195 | | options.push(method.clone()); [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________________- help: try this: `if router.recognize(path).ok().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/router.rs:268:52 [INFO] [stderr] | [INFO] [stderr] 268 | self.handle_method(req, &path).unwrap_or( [INFO] [stderr] | ____________________________________________________^ [INFO] [stderr] 269 | | Err(IronError::new(NoRoute, status::NotFound)) [INFO] [stderr] 270 | | ) [INFO] [stderr] | |_____________________^ help: try this: `unwrap_or_else(|| Err(IronError::new(NoRoute, status::NotFound)))` [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: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/url_for.rs:14:59 [INFO] [stderr] | [INFO] [stderr] 14 | pub fn url_for(request: &Request, route_id: &str, params: HashMap) -> ::iron::Url { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 14 | pub fn url_for(request: &Request, route_id: &str, params: HashMap) -> ::iron::Url { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rusty_pipe`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> examples/simple_with_macro.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | let ref query = req.extensions.get::() [INFO] [stderr] | ^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 23 | let query = &req.extensions.get::() [INFO] [stderr] 24 | .unwrap().params.find("query").unwrap_or("/"); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> examples/simple.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | let ref query = req.extensions.get::() [INFO] [stderr] | ^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 24 | let query = &req.extensions.get::() [INFO] [stderr] 25 | .unwrap().params.find("query").unwrap_or("/"); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> examples/url_for.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | let ref query = req.extensions.get::() [INFO] [stderr] | ^^^^^^^^^ [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] help: try [INFO] [stderr] | [INFO] [stderr] 33 | let query = &req.extensions.get::() [INFO] [stderr] 34 | .unwrap().params.find("query").unwrap_or("/"); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "e16a5e62d63890b42f443d5b7a8534d6a3239f212d6a2be0a0238f127dafd361"` [INFO] running `"docker" "rm" "-f" "e16a5e62d63890b42f443d5b7a8534d6a3239f212d6a2be0a0238f127dafd361"` [INFO] [stdout] e16a5e62d63890b42f443d5b7a8534d6a3239f212d6a2be0a0238f127dafd361