[INFO] crate rouille 3.0.0 is already in cache [INFO] extracting crate rouille 3.0.0 into work/ex/clippy-test-run/sources/stable/reg/rouille/3.0.0 [INFO] extracting crate rouille 3.0.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rouille/3.0.0 [INFO] validating manifest of rouille-3.0.0 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 rouille-3.0.0 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 rouille-3.0.0 [INFO] finished frobbing rouille-3.0.0 [INFO] frobbed toml for rouille-3.0.0 written to work/ex/clippy-test-run/sources/stable/reg/rouille/3.0.0/Cargo.toml [INFO] started frobbing rouille-3.0.0 [INFO] finished frobbing rouille-3.0.0 [INFO] frobbed toml for rouille-3.0.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rouille/3.0.0/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 rouille-3.0.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rouille/3.0.0:/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] 83e68dd0fea53781755181008bcc963a2a74cfce8d6656fe8edb3c52c2741f6e [INFO] running `"docker" "start" "-a" "83e68dd0fea53781755181008bcc963a2a74cfce8d6656fe8edb3c52c2741f6e"` [INFO] [stderr] Checking ascii v0.8.7 [INFO] [stderr] Checking buf_redux v0.8.1 [INFO] [stderr] Checking gzip-header v0.2.0 [INFO] [stderr] Checking postgres-shared v0.4.2 [INFO] [stderr] Compiling mime_guess v1.8.6 [INFO] [stderr] Checking tiny_http v0.6.2 [INFO] [stderr] Checking deflate v0.7.19 [INFO] [stderr] Checking postgres v0.15.2 [INFO] [stderr] Checking multipart v0.15.4 [INFO] [stderr] Checking rouille v3.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:195:33 [INFO] [stderr] | [INFO] [stderr] 195 | let e = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:196:33 [INFO] [stderr] | [INFO] [stderr] 196 | let f = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:197:33 [INFO] [stderr] | [INFO] [stderr] 197 | let g = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:198:33 [INFO] [stderr] | [INFO] [stderr] 198 | let h = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:228:33 [INFO] [stderr] | [INFO] [stderr] 228 | let d = u32::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:195:33 [INFO] [stderr] | [INFO] [stderr] 195 | let e = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:196:33 [INFO] [stderr] | [INFO] [stderr] 196 | let f = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:197:33 [INFO] [stderr] | [INFO] [stderr] 197 | let g = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:198:33 [INFO] [stderr] | [INFO] [stderr] 198 | let h = u64::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/websocket/low_level.rs:228:33 [INFO] [stderr] | [INFO] [stderr] 228 | let d = u32::from(*mask_iter.next().unwrap()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/input/priority_header.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | / if req_elem_left == Some("*") || header_elem_left == Some("*") { [INFO] [stderr] 61 | | if req_elem_right == header_elem_right || req_elem_right == Some("*") || [INFO] [stderr] 62 | | header_elem_right == Some("*") [INFO] [stderr] 63 | | { [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 60 | if (req_elem_left == Some("*") || header_elem_left == Some("*")) && (req_elem_right == header_elem_right || req_elem_right == Some("*") || [INFO] [stderr] 61 | header_elem_right == Some("*")) { [INFO] [stderr] 62 | result = (Some(index), prio); [INFO] [stderr] 63 | continue; [INFO] [stderr] 64 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/input/priority_header.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | / if req_elem_right == Some("*") || header_elem_right == Some("*") { [INFO] [stderr] 70 | | if req_elem_left == header_elem_left || req_elem_left == Some("*") || [INFO] [stderr] 71 | | header_elem_left == Some("*") [INFO] [stderr] 72 | | { [INFO] [stderr] ... | [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 69 | if (req_elem_right == Some("*") || header_elem_right == Some("*")) && (req_elem_left == header_elem_left || req_elem_left == Some("*") || [INFO] [stderr] 70 | header_elem_left == Some("*")) { [INFO] [stderr] 71 | result = (Some(index), prio); [INFO] [stderr] 72 | continue; [INFO] [stderr] 73 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/websocket/low_level.rs:313:22 [INFO] [stderr] | [INFO] [stderr] 313 | let mask = ((self.mask >> (3 - self.offset) * 8) & 0xff) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `self.mask >> ((3 - self.offset) * 8)` [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: module has the same name as its containing module [INFO] [stderr] --> src/websocket/mod.rs:89:1 [INFO] [stderr] | [INFO] [stderr] 89 | mod websocket; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 103 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 104 | | "text/plain" => 5, [INFO] [stderr] 105 | | "*/*" => 12, [INFO] [stderr] 106 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 103 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 104 | | "text/plain" => 5, [INFO] [stderr] 105 | | "*/*" => 12, [INFO] [stderr] 106 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 117 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 118 | | "text/plain" => 5, [INFO] [stderr] 119 | | "*/*" => 12, [INFO] [stderr] 120 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 117 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 118 | | "text/plain" => 5, [INFO] [stderr] 119 | | "*/*" => 12, [INFO] [stderr] 120 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 131 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 132 | | "text/plain" => 5, [INFO] [stderr] 133 | | "image/svg+xml" => 12, [INFO] [stderr] 134 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 131 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 132 | | "text/plain" => 5, [INFO] [stderr] 133 | | "image/svg+xml" => 12, [INFO] [stderr] 134 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 145 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 146 | | "text/plain" => 5, [INFO] [stderr] 147 | | "text/plain" => 12, [INFO] [stderr] 148 | | "text/plain" => 28, [INFO] [stderr] 149 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 145 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 146 | | "text/plain" => 5, [INFO] [stderr] 147 | | "text/plain" => 12, [INFO] [stderr] 148 | | "text/plain" => 28, [INFO] [stderr] 149 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 158 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 159 | | "image/gif" => { 5 }, [INFO] [stderr] 160 | | "text/plain" => 12, [INFO] [stderr] 161 | | "text/html" => 28, [INFO] [stderr] 162 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 158 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 159 | | "image/gif" => { 5 }, [INFO] [stderr] 160 | | "text/plain" => 12, [INFO] [stderr] 161 | | "text/html" => 28, [INFO] [stderr] 162 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/input/accept.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | i [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 173 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 174 | | "image/gif" => { 5 }, [INFO] [stderr] 175 | | "text/plain" => 12, [INFO] [stderr] 176 | | "text/html" => 28, [INFO] [stderr] 177 | | "*/*" => 37 [INFO] [stderr] 178 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/input/accept.rs:70:23 [INFO] [stderr] | [INFO] [stderr] 70 | $(let i = i.chain(iter::once($mime));)+ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 173 | let result = accept!(&request, [INFO] [stderr] | ______________________- [INFO] [stderr] 174 | | "image/gif" => { 5 }, [INFO] [stderr] 175 | | "text/plain" => 12, [INFO] [stderr] 176 | | "text/html" => 28, [INFO] [stderr] 177 | | "*/*" => 37 [INFO] [stderr] 178 | | ); [INFO] [stderr] | |_________- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/input/priority_header.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | / if req_elem_left == Some("*") || header_elem_left == Some("*") { [INFO] [stderr] 61 | | if req_elem_right == header_elem_right || req_elem_right == Some("*") || [INFO] [stderr] 62 | | header_elem_right == Some("*") [INFO] [stderr] 63 | | { [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 60 | if (req_elem_left == Some("*") || header_elem_left == Some("*")) && (req_elem_right == header_elem_right || req_elem_right == Some("*") || [INFO] [stderr] 61 | header_elem_right == Some("*")) { [INFO] [stderr] 62 | result = (Some(index), prio); [INFO] [stderr] 63 | continue; [INFO] [stderr] 64 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/input/priority_header.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | / if req_elem_right == Some("*") || header_elem_right == Some("*") { [INFO] [stderr] 70 | | if req_elem_left == header_elem_left || req_elem_left == Some("*") || [INFO] [stderr] 71 | | header_elem_left == Some("*") [INFO] [stderr] 72 | | { [INFO] [stderr] ... | [INFO] [stderr] 75 | | } [INFO] [stderr] 76 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 69 | if (req_elem_right == Some("*") || header_elem_right == Some("*")) && (req_elem_left == header_elem_left || req_elem_left == Some("*") || [INFO] [stderr] 70 | header_elem_left == Some("*")) { [INFO] [stderr] 71 | result = (Some(index), prio); [INFO] [stderr] 72 | continue; [INFO] [stderr] 73 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/websocket/low_level.rs:313:22 [INFO] [stderr] | [INFO] [stderr] 313 | let mask = ((self.mask >> (3 - self.offset) * 8) & 0xff) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `self.mask >> ((3 - self.offset) * 8)` [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: module has the same name as its containing module [INFO] [stderr] --> src/websocket/mod.rs:89:1 [INFO] [stderr] | [INFO] [stderr] 89 | mod websocket; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/lib.rs:99:5 [INFO] [stderr] | [INFO] [stderr] 99 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/content_encoding.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/websocket/mod.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/response.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/lib.rs:99:5 [INFO] [stderr] | [INFO] [stderr] 99 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/content_encoding.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/websocket/mod.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/response.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/input/multipart.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn next(&mut self) -> Option>>> { [INFO] [stderr] 85 | | self.inner.read_entry().unwrap_or(None) [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/session.rs:50:22 [INFO] [stderr] | [INFO] [stderr] 50 | let mut cookie = input::cookies(request).into_iter(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input::cookies(request)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `b` [INFO] [stderr] --> src/websocket/low_level.rs:168:40 [INFO] [stderr] | [INFO] [stderr] 168 | (a << 8) | (b << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:176:64 [INFO] [stderr] | [INFO] [stderr] 176 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `h` [INFO] [stderr] --> src/websocket/low_level.rs:208:68 [INFO] [stderr] | [INFO] [stderr] 208 | (e << 24) | (f << 16) | (g << 8) | (h << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:216:64 [INFO] [stderr] | [INFO] [stderr] 216 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:229:64 [INFO] [stderr] | [INFO] [stderr] 229 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/websocket/websocket.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | / if self.socket.is_none() { [INFO] [stderr] 136 | | return None; [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `self.socket?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `len` [INFO] [stderr] --> src/websocket/websocket.rs:324:20 [INFO] [stderr] | [INFO] [stderr] 324 | let len8 = (len >> 0) as u8; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a` [INFO] [stderr] --> src/router.rs:428:42 [INFO] [stderr] | [INFO] [stderr] 428 | (GET) ["/math/{a}/plus/{b}", a: u32 , b: u32] => { 7. }, [INFO] [stderr] | ^ help: consider using `_a` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `b` [INFO] [stderr] --> src/router.rs:428:51 [INFO] [stderr] | [INFO] [stderr] 428 | (GET) ["/math/{a}/plus/{b}", a: u32 , b: u32] => { 7. }, [INFO] [stderr] | ^ help: consider using `_b` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/router.rs:556:37 [INFO] [stderr] | [INFO] [stderr] 556 | (GET) ["/hello/{name}", name: String, id: u32] => { 1 }, // this should fail [INFO] [stderr] | ^^^^ help: consider using `_name` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/router.rs:556:51 [INFO] [stderr] | [INFO] [stderr] 556 | (GET) ["/hello/{name}", name: String, id: u32] => { 1 }, // this should fail [INFO] [stderr] | ^^ help: consider using `_id` instead [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/input/multipart.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn next(&mut self) -> Option>>> { [INFO] [stderr] 85 | | self.inner.read_entry().unwrap_or(None) [INFO] [stderr] 86 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 693 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 694 | | field: u32 [INFO] [stderr] 695 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mem_replace_option_with_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 707 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 708 | | field: f32 [INFO] [stderr] 709 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/input/post.rs:711:9 [INFO] [stderr] | [INFO] [stderr] 711 | assert_eq!(input.field, 12.8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/input/post.rs:711:9 [INFO] [stderr] | [INFO] [stderr] 711 | assert_eq!(input.field, 12.8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 721 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 722 | | field: String [INFO] [stderr] 723 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 735 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 736 | | field: Option [INFO] [stderr] 737 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 749 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 750 | | field: bool [INFO] [stderr] 751 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 763 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 764 | | field: String [INFO] [stderr] 765 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 777 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 778 | | field: String [INFO] [stderr] 779 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 794 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 795 | | field: u32 [INFO] [stderr] 796 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 808 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 809 | | field: u32 [INFO] [stderr] 810 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 826 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 827 | | field: bool [INFO] [stderr] 828 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 840 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 841 | | field: Vec [INFO] [stderr] 842 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 854 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 855 | | field: Vec [INFO] [stderr] 856 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 872 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 873 | | field: Vec> [INFO] [stderr] 874 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 886 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 887 | | field: String [INFO] [stderr] 888 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 904 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 905 | | field: Option [INFO] [stderr] 906 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 918 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 919 | | field: bool [INFO] [stderr] 920 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 932 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 933 | | field: Vec [INFO] [stderr] 934 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 946 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 947 | | field: u32 [INFO] [stderr] 948 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 964 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 965 | | field: Option [INFO] [stderr] 966 | | }).unwrap(); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 978 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 979 | | field: u8 [INFO] [stderr] 980 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 998 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 999 | | field: u8 [INFO] [stderr] 1000 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> src/input/post.rs:508:37 [INFO] [stderr] | [INFO] [stderr] 508 | let extracted = mem::replace(a, None).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `a.take()` [INFO] [stderr] ... [INFO] [stderr] 1016 | let input = post_input!(&request, { [INFO] [stderr] | _____________________- [INFO] [stderr] 1017 | | field: String [INFO] [stderr] 1018 | | }); [INFO] [stderr] | |__________- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/input/cookies.rs:106:14 [INFO] [stderr] | [INFO] [stderr] 106 | ("a".into(), "b".into()), [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `"a"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/input/cookies.rs:106:26 [INFO] [stderr] | [INFO] [stderr] 106 | ("a".into(), "b".into()), [INFO] [stderr] | ^^^^^^^^^^ help: consider removing `.into()`: `"b"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/input/cookies.rs:107:14 [INFO] [stderr] | [INFO] [stderr] 107 | ("hello".into(), "world".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `"hello"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/input/cookies.rs:107:30 [INFO] [stderr] | [INFO] [stderr] 107 | ("hello".into(), "world".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider removing `.into()`: `"world"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/session.rs:50:22 [INFO] [stderr] | [INFO] [stderr] 50 | let mut cookie = input::cookies(request).into_iter(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `input::cookies(request)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `b` [INFO] [stderr] --> src/websocket/low_level.rs:168:40 [INFO] [stderr] | [INFO] [stderr] 168 | (a << 8) | (b << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:176:64 [INFO] [stderr] | [INFO] [stderr] 176 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `h` [INFO] [stderr] --> src/websocket/low_level.rs:208:68 [INFO] [stderr] | [INFO] [stderr] 208 | (e << 24) | (f << 16) | (g << 8) | (h << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:216:64 [INFO] [stderr] | [INFO] [stderr] 216 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `d` [INFO] [stderr] --> src/websocket/low_level.rs:229:64 [INFO] [stderr] | [INFO] [stderr] 229 | (a << 24) | (b << 16) | (c << 8) | (d << 0) [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/websocket/websocket.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | / if self.socket.is_none() { [INFO] [stderr] 136 | | return None; [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `self.socket?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `len` [INFO] [stderr] --> src/websocket/websocket.rs:324:20 [INFO] [stderr] | [INFO] [stderr] 324 | let len8 = (len >> 0) as u8; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/router.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | assert_eq!(7.2, resp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/router.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | assert_eq!(7.2, resp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/router.rs:515:52 [INFO] [stderr] | [INFO] [stderr] 515 | (GET) ["/hello/{id}", id: f32] => { if id == 5.1 { 1 } else { 0 } }, [INFO] [stderr] | ^^^^^^^^^ help: consider comparing them within some error: `(id - 5.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/router.rs:515:52 [INFO] [stderr] | [INFO] [stderr] 515 | (GET) ["/hello/{id}", id: f32] => { if id == 5.1 { 1 } else { 0 } }, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rouille`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> examples/login-session.rs:143:14 [INFO] [stderr] | [INFO] [stderr] 143 | _ => () [INFO] [stderr] | ^^ help: remove the final `()` [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: unreachable expression [INFO] [stderr] --> examples/login-session.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / router!(request, [INFO] [stderr] 94 | | (POST) (/login) => { [INFO] [stderr] 95 | | // This is the route that is called when the user wants to log in. [INFO] [stderr] 96 | | [INFO] [stderr] ... | [INFO] [stderr] 143 | | _ => () [INFO] [stderr] 144 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> examples/login-session.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / router!(request, [INFO] [stderr] 94 | | (POST) (/login) => { [INFO] [stderr] 95 | | // This is the route that is called when the user wants to log in. [INFO] [stderr] 96 | | [INFO] [stderr] ... | [INFO] [stderr] 143 | | _ => () [INFO] [stderr] 144 | | ); [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: replacing an `Option` with `None` [INFO] [stderr] --> examples/login-session.rs:103:36 [INFO] [stderr] | [INFO] [stderr] 103 | let data = try_or_400!(post_input!(request, { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 104 | | login: String, [INFO] [stderr] 105 | | password: String, [INFO] [stderr] 106 | | })); [INFO] [stderr] | |______________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mem_replace_option_with_none)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_none [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> examples/login-session.rs:115:42 [INFO] [stderr] | [INFO] [stderr] 115 | if data.password.starts_with("b") { [INFO] [stderr] | ^^^ help: try using a char instead: `'b'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> examples/hello-world.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / router!(request, [INFO] [stderr] 32 | | (GET) (/) => { [INFO] [stderr] 33 | | // If the request's URL is `/`, we jump here. [INFO] [stderr] 34 | | // This block builds a `Response` object that redirects to the `/hello/world`. [INFO] [stderr] ... | [INFO] [stderr] 81 | | _ => rouille::Response::empty_404() [INFO] [stderr] 82 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> examples/database.rs:100:1 [INFO] [stderr] | [INFO] [stderr] 100 | / fn note_routes(request: &Request, db: &Transaction) -> Response { [INFO] [stderr] 101 | | router!(request, [INFO] [stderr] 102 | | (GET) (/) => { [INFO] [stderr] 103 | | // For the sake of the example we just put a dummy route for `/` so that you see [INFO] [stderr] ... | [INFO] [stderr] 197 | | ) [INFO] [stderr] 198 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "83e68dd0fea53781755181008bcc963a2a74cfce8d6656fe8edb3c52c2741f6e"` [INFO] running `"docker" "rm" "-f" "83e68dd0fea53781755181008bcc963a2a74cfce8d6656fe8edb3c52c2741f6e"` [INFO] [stdout] 83e68dd0fea53781755181008bcc963a2a74cfce8d6656fe8edb3c52c2741f6e