[INFO] updating cached repository pontuslaestadius/ftp-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/pontuslaestadius/ftp-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/pontuslaestadius/ftp-rust" "work/ex/clippy-test-run/sources/stable/gh/pontuslaestadius/ftp-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/pontuslaestadius/ftp-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/pontuslaestadius/ftp-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pontuslaestadius/ftp-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pontuslaestadius/ftp-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 10ae254549c0d4c88f0f4e7c91e132405818891b [INFO] sha for GitHub repo pontuslaestadius/ftp-rust: 10ae254549c0d4c88f0f4e7c91e132405818891b [INFO] validating manifest of pontuslaestadius/ftp-rust 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 pontuslaestadius/ftp-rust 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 pontuslaestadius/ftp-rust [INFO] finished frobbing pontuslaestadius/ftp-rust [INFO] frobbed toml for pontuslaestadius/ftp-rust written to work/ex/clippy-test-run/sources/stable/gh/pontuslaestadius/ftp-rust/Cargo.toml [INFO] started frobbing pontuslaestadius/ftp-rust [INFO] finished frobbing pontuslaestadius/ftp-rust [INFO] frobbed toml for pontuslaestadius/ftp-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pontuslaestadius/ftp-rust/Cargo.toml [INFO] crate pontuslaestadius/ftp-rust 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 pontuslaestadius/ftp-rust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/pontuslaestadius/ftp-rust:/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] 4815499b7f6d2c9cc7866888e5819f7be03d0dac59ae24b8e11045fdc221edf3 [INFO] running `"docker" "start" "-a" "4815499b7f6d2c9cc7866888e5819f7be03d0dac59ae24b8e11045fdc221edf3"` [INFO] [stderr] Checking ftp-rust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `File` [INFO] [stderr] --> src/ftp/mod.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `OpenOptions` [INFO] [stderr] --> src/ftp/server/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/ftp/server/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/decode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/decode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/encode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/encode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `File` [INFO] [stderr] --> src/ftp/mod.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `OpenOptions` [INFO] [stderr] --> src/ftp/server/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/ftp/server/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/decode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/decode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/encode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/encode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/ftp/server/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `string` [INFO] [stderr] --> src/ftp/server/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ^^^^^^ help: consider using `_string` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `c` [INFO] [stderr] --> src/ftp/server/mod.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ^ help: consider using `_c` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stream` [INFO] [stderr] --> src/ftp/server/mod.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | fn notify_client_err(stream: &mut TcpStream, error: io::Error) { [INFO] [stderr] | ^^^^^^ help: consider using `_stream` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/client/mod.rs:8:14 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn start(address: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_size` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | let mut decoded_size: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_size` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_pktn` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | let mut decoded_pktn: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_pktn` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_size` is never read [INFO] [stderr] --> src/ftp/decode.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | "size" => decoded_size = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_pktn` is never read [INFO] [stderr] --> src/ftp/decode.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | "pktn" => decoded_pktn = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/ftp/encode.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let size = content.len(); [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/mod.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `port` [INFO] [stderr] --> src/ftp/mod.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^ help: consider using `_port` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `client` [INFO] [stderr] --> src/ftp/client/mod.rs:30:26 [INFO] [stderr] | [INFO] [stderr] 30 | let (mut stream, client) = super::client::new(self.address)?; [INFO] [stderr] | ^^^^^^ help: consider using `_client` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut f = OpenOptions::new() [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | let mut files = "examples/files/foo.txt"; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/client/mod.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut stream = super::connect(address)?; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/decode.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut rows = section2.next().unwrap().split(';'); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/encode.rs:24:53 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn from_meta_data(metadata: metadata::Metadata, mut content: &mut String) -> Result, io::Error> { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/ftp/server/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/client/mod.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | self.action(input.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused variable: `string` [INFO] [stderr] --> src/ftp/server/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ^^^^^^ help: consider using `_string` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ftp/decode.rs:30:36 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i = each.split(":"); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [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: unused variable: `c` [INFO] [stderr] --> src/ftp/server/mod.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ^ help: consider using `_c` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stream` [INFO] [stderr] --> src/ftp/server/mod.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | fn notify_client_err(stream: &mut TcpStream, error: io::Error) { [INFO] [stderr] | ^^^^^^ help: consider using `_stream` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/client/mod.rs:8:14 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn start(address: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_size` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | let mut decoded_size: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_size` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_pktn` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | let mut decoded_pktn: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_pktn` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_size` is never read [INFO] [stderr] --> src/ftp/decode.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | "size" => decoded_size = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_pktn` is never read [INFO] [stderr] --> src/ftp/decode.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | "pktn" => decoded_pktn = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/ftp/encode.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let size = content.len(); [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/mod.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `port` [INFO] [stderr] --> src/ftp/mod.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^ help: consider using `_port` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `client` [INFO] [stderr] --> src/ftp/client/mod.rs:30:26 [INFO] [stderr] | [INFO] [stderr] 30 | let (mut stream, client) = super::client::new(self.address)?; [INFO] [stderr] | ^^^^^^ help: consider using `_client` instead [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/encode.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | file.read_to_string(&mut content); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match (super::STDBUF + split_at) > content.len() { [INFO] [stderr] 41 | | true => split_at = content.len(), [INFO] [stderr] 42 | | false => split_at += stdbuf, [INFO] [stderr] 43 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (super::STDBUF + split_at) > content.len() { split_at = content.len() } else { split_at += stdbuf }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:46:19 [INFO] [stderr] | [INFO] [stderr] 46 | let min = match (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 47 | | true => split_at-stdbuf, [INFO] [stderr] 48 | | false => 0, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { split_at-stdbuf } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/ftp/mod.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | for i in 0..range { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 21 | for in bytes.iter().take(range) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | fn format_tag<'a, 'b> (tag: &'a str, cont: &'a str) -> String { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn read_socket<'a> [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut f = OpenOptions::new() [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ftp/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn from_str(buf: &str) -> Buffer { [INFO] [stderr] 155 | | Buffer { [INFO] [stderr] 156 | | buf: buf.as_bytes().to_vec() [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [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: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | let mut files = "examples/files/foo.txt"; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/client/mod.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut stream = super::connect(address)?; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/decode.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut rows = section2.next().unwrap().split(';'); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/encode.rs:24:53 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn from_meta_data(metadata: metadata::Metadata, mut content: &mut String) -> Result, io::Error> { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/client/mod.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | self.action(input.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ftp/decode.rs:30:36 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i = each.split(":"); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/encode.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | file.read_to_string(&mut content); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match (super::STDBUF + split_at) > content.len() { [INFO] [stderr] 41 | | true => split_at = content.len(), [INFO] [stderr] 42 | | false => split_at += stdbuf, [INFO] [stderr] 43 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (super::STDBUF + split_at) > content.len() { split_at = content.len() } else { split_at += stdbuf }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:46:19 [INFO] [stderr] | [INFO] [stderr] 46 | let min = match (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 47 | | true => split_at-stdbuf, [INFO] [stderr] 48 | | false => 0, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { split_at-stdbuf } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/ftp/mod.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | for i in 0..range { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 21 | for in bytes.iter().take(range) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | fn format_tag<'a, 'b> (tag: &'a str, cont: &'a str) -> String { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn read_socket<'a> [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ftp/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn from_str(buf: &str) -> Buffer { [INFO] [stderr] 155 | | Buffer { [INFO] [stderr] 156 | | buf: buf.as_bytes().to_vec() [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [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: unused import: `File` [INFO] [stderr] --> src/ftp/mod.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `OpenOptions` [INFO] [stderr] --> src/ftp/server/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/ftp/server/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/decode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/decode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/encode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/encode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `File` [INFO] [stderr] --> src/ftp/mod.rs:4:15 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `File`, `OpenOptions` [INFO] [stderr] --> src/ftp/server/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/ftp/server/mod.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/decode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/decode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/ftp/encode.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `OpenOptions` [INFO] [stderr] --> src/ftp/encode.rs:4:21 [INFO] [stderr] | [INFO] [stderr] 4 | use std::fs::{File, OpenOptions}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/ftp/server/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `string` [INFO] [stderr] --> src/ftp/server/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ^^^^^^ help: consider using `_string` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `c` [INFO] [stderr] --> src/ftp/server/mod.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ^ help: consider using `_c` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stream` [INFO] [stderr] --> src/ftp/server/mod.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | fn notify_client_err(stream: &mut TcpStream, error: io::Error) { [INFO] [stderr] | ^^^^^^ help: consider using `_stream` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/client/mod.rs:8:14 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn start(address: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_size` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | let mut decoded_size: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_size` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_pktn` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | let mut decoded_pktn: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_pktn` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_size` is never read [INFO] [stderr] --> src/ftp/decode.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | "size" => decoded_size = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_pktn` is never read [INFO] [stderr] --> src/ftp/decode.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | "pktn" => decoded_pktn = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/ftp/encode.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let size = content.len(); [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/mod.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `port` [INFO] [stderr] --> src/ftp/mod.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^ help: consider using `_port` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `client` [INFO] [stderr] --> src/ftp/client/mod.rs:30:26 [INFO] [stderr] | [INFO] [stderr] 30 | let (mut stream, client) = super::client::new(self.address)?; [INFO] [stderr] | ^^^^^^ help: consider using `_client` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut f = OpenOptions::new() [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | let mut files = "examples/files/foo.txt"; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/ftp/server/mod.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/client/mod.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut stream = super::connect(address)?; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/decode.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut rows = section2.next().unwrap().split(';'); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `string` [INFO] [stderr] --> src/ftp/server/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ^^^^^^ help: consider using `_string` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `c` [INFO] [stderr] --> src/ftp/server/mod.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ^ help: consider using `_c` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stream` [INFO] [stderr] --> src/ftp/server/mod.rs:46:22 [INFO] [stderr] | [INFO] [stderr] 46 | fn notify_client_err(stream: &mut TcpStream, error: io::Error) { [INFO] [stderr] | ^^^^^^ help: consider using `_stream` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/client/mod.rs:8:14 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn start(address: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_size` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | let mut decoded_size: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_size` instead [INFO] [stderr] [INFO] [stderr] warning: variable `decoded_pktn` is assigned to, but never used [INFO] [stderr] --> src/ftp/decode.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | let mut decoded_pktn: &str = ""; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_decoded_pktn` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_size` is never read [INFO] [stderr] --> src/ftp/decode.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | "size" => decoded_size = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `decoded_pktn` is never read [INFO] [stderr] --> src/ftp/decode.rs:41:27 [INFO] [stderr] | [INFO] [stderr] 41 | "pktn" => decoded_pktn = value, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/encode.rs:24:53 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn from_meta_data(metadata: metadata::Metadata, mut content: &mut String) -> Result, io::Error> { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/ftp/encode.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | let size = content.len(); [INFO] [stderr] | ^^^^ help: consider using `_size` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `address` [INFO] [stderr] --> src/ftp/mod.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^^^^ help: consider using `_address` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `port` [INFO] [stderr] --> src/ftp/mod.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn start_server(address: &str, port: &str) { [INFO] [stderr] | ^^^^ help: consider using `_port` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `client` [INFO] [stderr] --> src/ftp/client/mod.rs:30:26 [INFO] [stderr] | [INFO] [stderr] 30 | let (mut stream, client) = super::client::new(self.address)?; [INFO] [stderr] | ^^^^^^ help: consider using `_client` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | let mut f = OpenOptions::new() [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/client/mod.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | self.action(input.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | let mut files = "examples/files/foo.txt"; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ftp/decode.rs:30:36 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i = each.split(":"); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/encode.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | file.read_to_string(&mut content); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match (super::STDBUF + split_at) > content.len() { [INFO] [stderr] 41 | | true => split_at = content.len(), [INFO] [stderr] 42 | | false => split_at += stdbuf, [INFO] [stderr] 43 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (super::STDBUF + split_at) > content.len() { split_at = content.len() } else { split_at += stdbuf }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut string: String = String::new(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/server/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | let mut c: usize; [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:46:19 [INFO] [stderr] | [INFO] [stderr] 46 | let min = match (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 47 | | true => split_at-stdbuf, [INFO] [stderr] 48 | | false => 0, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { split_at-stdbuf } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/client/mod.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | let mut stream = super::connect(address)?; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/ftp/mod.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | for i in 0..range { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 21 | for in bytes.iter().take(range) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | fn format_tag<'a, 'b> (tag: &'a str, cont: &'a str) -> String { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/decode.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let mut rows = section2.next().unwrap().split(';'); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ftp/encode.rs:24:53 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn from_meta_data(metadata: metadata::Metadata, mut content: &mut String) -> Result, io::Error> { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn read_socket<'a> [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/client/mod.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | self.action(input.as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ftp/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn from_str(buf: &str) -> Buffer { [INFO] [stderr] 155 | | Buffer { [INFO] [stderr] 156 | | buf: buf.as_bytes().to_vec() [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [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: empty `loop {}` detected. You may want to either use `panic!()` or add `std::thread::sleep(..);` to the loop body. [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | loop {/* TODO */} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::empty_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ftp/decode.rs:30:36 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i = each.split(":"); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/ftp/encode.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | file.read_to_string(&mut content); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match (super::STDBUF + split_at) > content.len() { [INFO] [stderr] 41 | | true => split_at = content.len(), [INFO] [stderr] 42 | | false => split_at += stdbuf, [INFO] [stderr] 43 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (super::STDBUF + split_at) > content.len() { split_at = content.len() } else { split_at += stdbuf }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ftp/encode.rs:46:19 [INFO] [stderr] | [INFO] [stderr] 46 | let min = match (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 47 | | true => split_at-stdbuf, [INFO] [stderr] 48 | | false => 0, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if (content.len() as i16-split_at as i16 -stdbuf as i16) > 0 { split_at-stdbuf } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `bytes`. [INFO] [stderr] --> src/ftp/mod.rs:21:14 [INFO] [stderr] | [INFO] [stderr] 21 | for i in 0..range { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 21 | for in bytes.iter().take(range) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | fn format_tag<'a, 'b> (tag: &'a str, cont: &'a str) -> String { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/ftp/mod.rs:97:20 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn read_socket<'a> [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: defining a method called `from_str` on this type; consider implementing the `std::str::FromStr` trait or choosing a less ambiguous name [INFO] [stderr] --> src/ftp/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | / pub fn from_str(buf: &str) -> Buffer { [INFO] [stderr] 155 | | Buffer { [INFO] [stderr] 156 | | buf: buf.as_bytes().to_vec() [INFO] [stderr] 157 | | } [INFO] [stderr] 158 | | } [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: empty `loop {}` detected. You may want to either use `panic!()` or add `std::thread::sleep(..);` to the loop body. [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | loop {/* TODO */} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::empty_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_loop [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.24s [INFO] running `"docker" "inspect" "4815499b7f6d2c9cc7866888e5819f7be03d0dac59ae24b8e11045fdc221edf3"` [INFO] running `"docker" "rm" "-f" "4815499b7f6d2c9cc7866888e5819f7be03d0dac59ae24b8e11045fdc221edf3"` [INFO] [stdout] 4815499b7f6d2c9cc7866888e5819f7be03d0dac59ae24b8e11045fdc221edf3