[INFO] updating cached repository sblundy/rust-http2-server [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/sblundy/rust-http2-server [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/sblundy/rust-http2-server" "work/ex/clippy-test-run/sources/stable/gh/sblundy/rust-http2-server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/sblundy/rust-http2-server'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/sblundy/rust-http2-server" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sblundy/rust-http2-server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sblundy/rust-http2-server'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 8b390140b509e3632f1396c1ea62d9e18d91e714 [INFO] sha for GitHub repo sblundy/rust-http2-server: 8b390140b509e3632f1396c1ea62d9e18d91e714 [INFO] validating manifest of sblundy/rust-http2-server 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 sblundy/rust-http2-server 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 sblundy/rust-http2-server [INFO] finished frobbing sblundy/rust-http2-server [INFO] frobbed toml for sblundy/rust-http2-server written to work/ex/clippy-test-run/sources/stable/gh/sblundy/rust-http2-server/Cargo.toml [INFO] started frobbing sblundy/rust-http2-server [INFO] finished frobbing sblundy/rust-http2-server [INFO] frobbed toml for sblundy/rust-http2-server written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sblundy/rust-http2-server/Cargo.toml [INFO] crate sblundy/rust-http2-server has a lockfile. skipping [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 sblundy/rust-http2-server against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/sblundy/rust-http2-server:/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] d66d0d2b1e22737dd2edb8660d459f53f68b7fc90ef7366812da46e8060dbe2a [INFO] running `"docker" "start" "-a" "d66d0d2b1e22737dd2edb8660d459f53f68b7fc90ef7366812da46e8060dbe2a"` [INFO] [stderr] Compiling openssl v0.9.17 [INFO] [stderr] Compiling openssl-sys v0.9.17 [INFO] [stderr] Checking iovec v0.1.0 [INFO] [stderr] Checking net2 v0.2.31 [INFO] [stderr] Checking tokio-service v0.1.0 [INFO] [stderr] Checking libflate v0.1.11 [INFO] [stderr] Checking futures-cpupool v0.1.5 [INFO] [stderr] Checking serde_urlencoded v0.5.1 [INFO] [stderr] Checking chrono v0.4.0 [INFO] [stderr] Checking mime v0.3.3 [INFO] [stderr] Checking bytes v0.4.5 [INFO] [stderr] Checking mio v0.6.10 [INFO] [stderr] Checking tokio-io v0.1.3 [INFO] [stderr] Checking tokio-core v0.1.9 [INFO] [stderr] Checking tokio-proto v0.1.1 [INFO] [stderr] Checking native-tls v0.1.4 [INFO] [stderr] Checking rust_https_server v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/file_system.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | gzipped: gzipped, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `gzipped` [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/file_system.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | write!(buffed, "HTTP/1.1 {} {}\n", code, text).expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | write!(buffed, "Connection: keep-alive\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | write!(buffed, "Connection: close\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | write!(buffed, "Date: {}\n", Utc::now().to_rfc2822()).expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | write!(buffed, "Server: rust-http2-server\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | write!(buffed, "\n").expect("Error while terminating the headers\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] Checking tokio-tls v0.1.3 [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | return Ok(Request::Get(url.clone(), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Get(url.clone(), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(Request::Head(url.clone(), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Head(url.clone(), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return Ok(Request::Options(None, Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Options(None, Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | return Ok(Request::Options(Some(url.clone()), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Options(Some(url.clone()), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | / return match (parts.next(), parts.next()) { [INFO] [stderr] 87 | | (Some(method), Some(url)) => Ok((method.to_string(), url.to_string())), [INFO] [stderr] 88 | | (Some(method), None) => { [INFO] [stderr] 89 | | eprintln!("No URL:method={}", method); [INFO] [stderr] ... | [INFO] [stderr] 92 | | _ => Err(BadRequest { code: "400", reason: "" }) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 86 | match (parts.next(), parts.next()) { [INFO] [stderr] 87 | (Some(method), Some(url)) => Ok((method.to_string(), url.to_string())), [INFO] [stderr] 88 | (Some(method), None) => { [INFO] [stderr] 89 | eprintln!("No URL:method={}", method); [INFO] [stderr] 90 | Err(BadRequest { code: "400", reason: "" }) [INFO] [stderr] 91 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | return headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/file_system.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / return FileSystemAdapter { [INFO] [stderr] 19 | | root: root.to_path_buf() [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 18 | FileSystemAdapter { [INFO] [stderr] 19 | root: root.to_path_buf() [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/file_system.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | return None [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | return Err(format!("Root path does not exist: {}", root_path.display())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format!("Root path does not exist: {}", root_path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | return Ok((pkey, x509)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((pkey, x509))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] Checking hyper v0.11.2 [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/server/http.rs:84:30 [INFO] [stderr] | [INFO] [stderr] 84 | fn parse_request_line(input: &String) -> Result<(String, String), BadRequest> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/http.rs:104:17 [INFO] [stderr] | [INFO] [stderr] 104 | / match line.find(':') { [INFO] [stderr] 105 | | Some(index) => { [INFO] [stderr] 106 | | let (name, value) = line.split_at(index); [INFO] [stderr] 107 | | let mut value_string = value.to_string(); [INFO] [stderr] ... | [INFO] [stderr] 112 | | None => {} [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 104 | if let Some(index) = line.find(':') { [INFO] [stderr] 105 | let (name, value) = line.split_at(index); [INFO] [stderr] 106 | let mut value_string = value.to_string(); [INFO] [stderr] 107 | value_string.remove(0); [INFO] [stderr] 108 | [INFO] [stderr] 109 | headers.insert(name.to_string(), value_string.trim().to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/file_system.rs:42:25 [INFO] [stderr] | [INFO] [stderr] 42 | / match File::open(gz_file_path) { [INFO] [stderr] 43 | | Ok(file) => { [INFO] [stderr] 44 | | return Some(FileHandle::new(mod_date.unwrap(), gzipped_len, true, file)) [INFO] [stderr] 45 | | }, [INFO] [stderr] 46 | | Err(_) => {} [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let Ok(file) = File::open(gz_file_path) { [INFO] [stderr] 43 | return Some(FileHandle::new(mod_date.unwrap(), gzipped_len, true, file)) [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/server/content_manager.rs:6:33 [INFO] [stderr] | [INFO] [stderr] 6 | fn find_content(&self, url: &String, accepts_gzip: bool) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/handlers.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | / match if_mod_since { [INFO] [stderr] 50 | | Some(dt) => { [INFO] [stderr] 51 | | if handle.is_mod_since(&dt) { [INFO] [stderr] 52 | | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] ... | [INFO] [stderr] 56 | | None => {} [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 49 | if let Some(dt) = if_mod_since { [INFO] [stderr] 50 | if handle.is_mod_since(&dt) { [INFO] [stderr] 51 | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] 52 | return; [INFO] [stderr] 53 | } [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/handlers.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | / match handler { [INFO] [stderr] 119 | | Some(mut h) => h.write_to(buffed), [INFO] [stderr] 120 | | None => {} [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(mut h) = handler { h.write_to(buffed) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] Checking hyper-tls v0.1.2 [INFO] [stderr] Checking reqwest v0.7.3 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/server/file_system.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | gzipped: gzipped, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `gzipped` [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/file_system.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | write!(buffed, "HTTP/1.1 {} {}\n", code, text).expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | write!(buffed, "Connection: keep-alive\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:110:9 [INFO] [stderr] | [INFO] [stderr] 110 | write!(buffed, "Connection: close\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | write!(buffed, "Date: {}\n", Utc::now().to_rfc2822()).expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | write!(buffed, "Server: rust-http2-server\n").expect("Error while writing to output\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/server/handlers.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | write!(buffed, "\n").expect("Error while terminating the headers\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | return Ok(Request::Get(url.clone(), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Get(url.clone(), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(Request::Head(url.clone(), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Head(url.clone(), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return Ok(Request::Options(None, Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Options(None, Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | return Ok(Request::Options(Some(url.clone()), Headers { headers })); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Request::Options(Some(url.clone()), Headers { headers }))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:86:5 [INFO] [stderr] | [INFO] [stderr] 86 | / return match (parts.next(), parts.next()) { [INFO] [stderr] 87 | | (Some(method), Some(url)) => Ok((method.to_string(), url.to_string())), [INFO] [stderr] 88 | | (Some(method), None) => { [INFO] [stderr] 89 | | eprintln!("No URL:method={}", method); [INFO] [stderr] ... | [INFO] [stderr] 92 | | _ => Err(BadRequest { code: "400", reason: "" }) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 86 | match (parts.next(), parts.next()) { [INFO] [stderr] 87 | (Some(method), Some(url)) => Ok((method.to_string(), url.to_string())), [INFO] [stderr] 88 | (Some(method), None) => { [INFO] [stderr] 89 | eprintln!("No URL:method={}", method); [INFO] [stderr] 90 | Err(BadRequest { code: "400", reason: "" }) [INFO] [stderr] 91 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/http.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | return headers; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `headers` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/file_system.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / return FileSystemAdapter { [INFO] [stderr] 19 | | root: root.to_path_buf() [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 18 | FileSystemAdapter { [INFO] [stderr] 19 | root: root.to_path_buf() [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/server/file_system.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | return None [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | return Err(format!("Root path does not exist: {}", root_path.display())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format!("Root path does not exist: {}", root_path.display()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | return Ok((pkey, x509)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((pkey, x509))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/server/http.rs:84:30 [INFO] [stderr] | [INFO] [stderr] 84 | fn parse_request_line(input: &String) -> Result<(String, String), BadRequest> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/http.rs:104:17 [INFO] [stderr] | [INFO] [stderr] 104 | / match line.find(':') { [INFO] [stderr] 105 | | Some(index) => { [INFO] [stderr] 106 | | let (name, value) = line.split_at(index); [INFO] [stderr] 107 | | let mut value_string = value.to_string(); [INFO] [stderr] ... | [INFO] [stderr] 112 | | None => {} [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 104 | if let Some(index) = line.find(':') { [INFO] [stderr] 105 | let (name, value) = line.split_at(index); [INFO] [stderr] 106 | let mut value_string = value.to_string(); [INFO] [stderr] 107 | value_string.remove(0); [INFO] [stderr] 108 | [INFO] [stderr] 109 | headers.insert(name.to_string(), value_string.trim().to_string()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/file_system.rs:42:25 [INFO] [stderr] | [INFO] [stderr] 42 | / match File::open(gz_file_path) { [INFO] [stderr] 43 | | Ok(file) => { [INFO] [stderr] 44 | | return Some(FileHandle::new(mod_date.unwrap(), gzipped_len, true, file)) [INFO] [stderr] 45 | | }, [INFO] [stderr] 46 | | Err(_) => {} [INFO] [stderr] 47 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let Ok(file) = File::open(gz_file_path) { [INFO] [stderr] 43 | return Some(FileHandle::new(mod_date.unwrap(), gzipped_len, true, file)) [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/server/content_manager.rs:6:33 [INFO] [stderr] | [INFO] [stderr] 6 | fn find_content(&self, url: &String, accepts_gzip: bool) -> Option; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/handlers.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | / match if_mod_since { [INFO] [stderr] 50 | | Some(dt) => { [INFO] [stderr] 51 | | if handle.is_mod_since(&dt) { [INFO] [stderr] 52 | | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] ... | [INFO] [stderr] 56 | | None => {} [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 49 | if let Some(dt) = if_mod_since { [INFO] [stderr] 50 | if handle.is_mod_since(&dt) { [INFO] [stderr] 51 | write!(buffed, "HTTP/1.1 304 Not Modified\n").expect("Error while writing to output\n"); [INFO] [stderr] 52 | return; [INFO] [stderr] 53 | } [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/server/handlers.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | / match handler { [INFO] [stderr] 119 | | Some(mut h) => h.write_to(buffed), [INFO] [stderr] 120 | | None => {} [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(mut h) = handler { h.write_to(buffed) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 23.84s [INFO] running `"docker" "inspect" "d66d0d2b1e22737dd2edb8660d459f53f68b7fc90ef7366812da46e8060dbe2a"` [INFO] running `"docker" "rm" "-f" "d66d0d2b1e22737dd2edb8660d459f53f68b7fc90ef7366812da46e8060dbe2a"` [INFO] [stdout] d66d0d2b1e22737dd2edb8660d459f53f68b7fc90ef7366812da46e8060dbe2a