[INFO] cloning repository https://github.com/D-G-Tomlinson/Finite-Automata-Project [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/D-G-Tomlinson/Finite-Automata-Project" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FD-G-Tomlinson%2FFinite-Automata-Project", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FD-G-Tomlinson%2FFinite-Automata-Project'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 612081fb37b3edfc550c124a7e3e82e0b5d6930b [INFO] linting D-G-Tomlinson/Finite-Automata-Project against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FD-G-Tomlinson%2FFinite-Automata-Project" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/D-G-Tomlinson/Finite-Automata-Project [INFO] finished tweaking git repo https://github.com/D-G-Tomlinson/Finite-Automata-Project [INFO] tweaked toml for git repo https://github.com/D-G-Tomlinson/Finite-Automata-Project written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/D-G-Tomlinson/Finite-Automata-Project on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/D-G-Tomlinson/Finite-Automata-Project already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded anstyle-query v1.1.1 [INFO] [stderr] Downloaded anstyle-wincon v3.0.4 [INFO] [stderr] Downloaded colorchoice v1.0.2 [INFO] [stderr] Downloaded clap_lex v0.7.2 [INFO] [stderr] Downloaded anstyle v1.0.8 [INFO] [stderr] Downloaded anstream v0.6.15 [INFO] [stderr] Downloaded anstyle-parse v0.2.5 [INFO] [stderr] Downloaded clap v4.5.18 [INFO] [stderr] Downloaded clap_builder v4.5.18 [INFO] [stderr] Downloaded syn v2.0.79 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9c2dfdb23802e1a446180c91f316b487837b4df84226fcc6b9944bbd39e8b1d3 [INFO] running `Command { std: "docker" "start" "-a" "9c2dfdb23802e1a446180c91f316b487837b4df84226fcc6b9944bbd39e8b1d3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9c2dfdb23802e1a446180c91f316b487837b4df84226fcc6b9944bbd39e8b1d3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9c2dfdb23802e1a446180c91f316b487837b4df84226fcc6b9944bbd39e8b1d3", kill_on_drop: false }` [INFO] [stdout] 9c2dfdb23802e1a446180c91f316b487837b4df84226fcc6b9944bbd39e8b1d3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e34a0103214b717c5f42f178b8503d4dddd6babf435eb229be811445992f98b9 [INFO] running `Command { std: "docker" "start" "-a" "e34a0103214b717c5f42f178b8503d4dddd6babf435eb229be811445992f98b9", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking colorchoice v1.0.2 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Checking anstyle v1.0.8 [INFO] [stderr] Checking anstyle-query v1.1.1 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Checking clap_lex v0.7.2 [INFO] [stderr] Checking anstyle-parse v0.2.5 [INFO] [stderr] Checking anstream v0.6.15 [INFO] [stderr] Checking clap_builder v4.5.18 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling syn v2.0.79 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking clap v4.5.18 [INFO] [stderr] Checking Finite_Automata_Project v1.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: name `DFA` contains a capitalized acronym [INFO] [stdout] --> src/dfa.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct DFA { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dfa` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:43:3 [INFO] [stdout] | [INFO] [stdout] 43 | / return match self.states[current_state].accepting { [INFO] [stdout] 44 | | true => Rslt::Acc, [INFO] [stdout] 45 | | false => Rslt::Rej [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 43 ~ match self.states[current_state].accepting { [INFO] [stdout] 44 ~ true => Rslt::Acc, [INFO] [stdout] 45 ~ false => Rslt::Rej [INFO] [stdout] 46 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:75:3 [INFO] [stdout] | [INFO] [stdout] 75 | return Ok(Self::new(states,alphabet,starting)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - return Ok(Self::new(states,alphabet,starting)); [INFO] [stdout] 75 + Ok(Self::new(states,alphabet,starting)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/dfa.rs:59:18 [INFO] [stdout] | [INFO] [stdout] 59 | let alphabet = match crate::get_alphabet(&lines[0]) { [INFO] [stdout] | ________________________^ [INFO] [stdout] 60 | | Err(e) => return Err(e), [INFO] [stdout] 61 | | Ok(ab) => ab [INFO] [stdout] 62 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&lines[0])?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:108:3 [INFO] [stdout] | [INFO] [stdout] 108 | return DFA::new(states,nfa.alphabet.clone(),starting); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 - return DFA::new(states,nfa.alphabet.clone(),starting); [INFO] [stdout] 108 + DFA::new(states,nfa.alphabet.clone(),starting) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:121:2 [INFO] [stdout] | [INFO] [stdout] 121 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 121 - return result; [INFO] [stdout] 121 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:113:18 [INFO] [stdout] | [INFO] [stdout] 113 | fn get_to(states:&Vec, from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 113 - fn get_to(states:&Vec, from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] 113 + fn get_to(states:&[NFAState], from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:130:2 [INFO] [stdout] | [INFO] [stdout] 130 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 130 - return result; [INFO] [stdout] 130 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/dfa.rs:125:17 [INFO] [stdout] | [INFO] [stdout] 125 | let eqs = from.into_iter().map(|state| get_to(states,*state,by,equivalents)); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:140:2 [INFO] [stdout] | [INFO] [stdout] 140 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 140 - return result; [INFO] [stdout] 140 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:134:58 [INFO] [stdout] | [INFO] [stdout] 134 | fn get_equivalents_vec(states:&Vec,equivalents:&Vec) -> Ordered { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 134 - fn get_equivalents_vec(states:&Vec,equivalents:&Vec) -> Ordered { [INFO] [stdout] 134 + fn get_equivalents_vec(states:&Vec,equivalents:&[Ordered]) -> Ordered { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:165:2 [INFO] [stdout] | [INFO] [stdout] 165 | return eqs; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return eqs; [INFO] [stdout] 165 + eqs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:144:27 [INFO] [stdout] | [INFO] [stdout] 144 | fn get_equivalents(states:&Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 144 - fn get_equivalents(states:&Vec) -> Vec { [INFO] [stdout] 144 + fn get_equivalents(states:&[NFAState]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:156:24 [INFO] [stdout] | [INFO] [stdout] 156 | let new = v1.join(&v2); [INFO] [stdout] | ^^^ help: change this to: `v2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:177:43 [INFO] [stdout] | [INFO] [stdout] 177 | accepts.push(is_accepting_vec(nfa_states,&state,equivalents)); [INFO] [stdout] | ^^^^^^ help: change this to: `state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:188:2 [INFO] [stdout] | [INFO] [stdout] 188 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 188 - return false; [INFO] [stdout] 188 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:181:28 [INFO] [stdout] | [INFO] [stdout] 181 | fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] 181 + fn is_accepting(nfa_states:&[NFAState],input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:181:77 [INFO] [stdout] | [INFO] [stdout] 181 | fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] 181 + fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&[Ordered]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:197:2 [INFO] [stdout] | [INFO] [stdout] 197 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 197 - return false; [INFO] [stdout] 197 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:193:30 [INFO] [stdout] | [INFO] [stdout] 193 | if is_accepting(nfa_states,&state,equivalents) { [INFO] [stdout] | ^^^^^^ help: change this to: `state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | / return Ok( [INFO] [stdout] 253 | | Self::new( [INFO] [stdout] 254 | | next_states, [INFO] [stdout] 255 | | accept) [INFO] [stdout] 256 | | ); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 252 ~ Ok( [INFO] [stdout] 253 ~ Self::new( [INFO] [stdout] 254 ~ next_states, [INFO] [stdout] 255 ~ accept) [INFO] [stdout] 256 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:226:20 [INFO] [stdout] | [INFO] [stdout] 226 | fn from_line(line:&String,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 226 - fn from_line(line:&String,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] 226 + fn from_line(line:&str,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/dfa.rs:233:56 [INFO] [stdout] | [INFO] [stdout] 233 | for next_state_str in (&split_state[0..num_letters]).into_iter(){ [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/dfa.rs:246:3 [INFO] [stdout] | [INFO] [stdout] 246 | let accept:bool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `accept` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 246 ~ [INFO] [stdout] 247 ~ let accept:bool = match split_state[num_letters].parse() { [INFO] [stdout] 248 ~ Ok(a) => a, [INFO] [stdout] 249 | Err(_) => return Err("Poorly formatted accepting/not accepting value.".to_string()), [INFO] [stdout] 250 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:62:3 [INFO] [stdout] | [INFO] [stdout] 62 | return Ok((transition_num,value)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 62 - return Ok((transition_num,value)); [INFO] [stdout] 62 + Ok((transition_num,value)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DFA` contains a capitalized acronym [INFO] [stdout] --> src/dfa.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct DFA { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Dfa` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:91:3 [INFO] [stdout] | [INFO] [stdout] 91 | return Ok(NFAState::new(transitions,accepting)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 91 - return Ok(NFAState::new(transitions,accepting)); [INFO] [stdout] 91 + Ok(NFAState::new(transitions,accepting)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/nfa.rs:70:52 [INFO] [stdout] | [INFO] [stdout] 70 | for transition in (&comma_split[0..num_parts-1]).into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:71:33 [INFO] [stdout] | [INFO] [stdout] 71 | let (transition_num,value) = match NFAState::get_transition(transition,alphabet,max_state) { [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 72 | | Ok(result) => result, [INFO] [stdout] 73 | | Err(e) => return Err(e) [INFO] [stdout] 74 | | }; [INFO] [stdout] | |_____________^ help: try instead: `NFAState::get_transition(transition,alphabet,max_state)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:43:3 [INFO] [stdout] | [INFO] [stdout] 43 | / return match self.states[current_state].accepting { [INFO] [stdout] 44 | | true => Rslt::Acc, [INFO] [stdout] 45 | | false => Rslt::Rej [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 43 ~ match self.states[current_state].accepting { [INFO] [stdout] 44 ~ true => Rslt::Acc, [INFO] [stdout] 45 ~ false => Rslt::Rej [INFO] [stdout] 46 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `transitions` [INFO] [stdout] --> src/nfa.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 86 | for i in 0..transitions.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 86 - for i in 0..transitions.len() { [INFO] [stdout] 86 + for in &mut transitions { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:75:3 [INFO] [stdout] | [INFO] [stdout] 75 | return Ok(Self::new(states,alphabet,starting)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 75 - return Ok(Self::new(states,alphabet,starting)); [INFO] [stdout] 75 + Ok(Self::new(states,alphabet,starting)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:112:3 [INFO] [stdout] | [INFO] [stdout] 112 | return output; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 112 - return output; [INFO] [stdout] 112 + output [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/dfa.rs:59:18 [INFO] [stdout] | [INFO] [stdout] 59 | let alphabet = match crate::get_alphabet(&lines[0]) { [INFO] [stdout] | ________________________^ [INFO] [stdout] 60 | | Err(e) => return Err(e), [INFO] [stdout] 61 | | Ok(ab) => ab [INFO] [stdout] 62 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&lines[0])?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:123:3 [INFO] [stdout] | [INFO] [stdout] 123 | return NFAState::new(transitions,dfastate.accepting); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return NFAState::new(transitions,dfastate.accepting); [INFO] [stdout] 123 + NFAState::new(transitions,dfastate.accepting) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:108:3 [INFO] [stdout] | [INFO] [stdout] 108 | return DFA::new(states,nfa.alphabet.clone(),starting); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 108 - return DFA::new(states,nfa.alphabet.clone(),starting); [INFO] [stdout] 108 + DFA::new(states,nfa.alphabet.clone(),starting) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NFA` contains a capitalized acronym [INFO] [stdout] --> src/nfa.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | pub struct NFA { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nfa` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:142:3 [INFO] [stdout] | [INFO] [stdout] 142 | return NFA::new(states,starting,alphabet); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 - return NFA::new(states,starting,alphabet); [INFO] [stdout] 142 + NFA::new(states,starting,alphabet) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:147:3 [INFO] [stdout] | [INFO] [stdout] 147 | return Ok(NFA::new(vec![state],0,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 - return Ok(NFA::new(vec![state],0,alphabet)); [INFO] [stdout] 147 + Ok(NFA::new(vec![state],0,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:121:2 [INFO] [stdout] | [INFO] [stdout] 121 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 121 - return result; [INFO] [stdout] 121 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:113:18 [INFO] [stdout] | [INFO] [stdout] 113 | fn get_to(states:&Vec, from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 113 - fn get_to(states:&Vec, from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] 113 + fn get_to(states:&[NFAState], from:StateNum, by:Index1,equivalents:&Vec) -> Ordered { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:130:2 [INFO] [stdout] | [INFO] [stdout] 130 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 130 - return result; [INFO] [stdout] 130 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:167:3 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(NFA::new(vec![start,end],0,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(NFA::new(vec![start,end],0,alphabet)); [INFO] [stdout] 167 + Ok(NFA::new(vec![start,end],0,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/nfa.rs:174:6 [INFO] [stdout] | [INFO] [stdout] 174 | *i = *i + by; [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `*i += by` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/dfa.rs:125:17 [INFO] [stdout] | [INFO] [stdout] 125 | let eqs = from.into_iter().map(|state| get_to(states,*state,by,equivalents)); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:195:3 [INFO] [stdout] | [INFO] [stdout] 195 | return Ok((*r1).clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return Ok((*r1).clone()); [INFO] [stdout] 195 + Ok((*r1).clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:140:2 [INFO] [stdout] | [INFO] [stdout] 140 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 140 - return result; [INFO] [stdout] 140 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:134:58 [INFO] [stdout] | [INFO] [stdout] 134 | fn get_equivalents_vec(states:&Vec,equivalents:&Vec) -> Ordered { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 134 - fn get_equivalents_vec(states:&Vec,equivalents:&Vec) -> Ordered { [INFO] [stdout] 134 + fn get_equivalents_vec(states:&Vec,equivalents:&[Ordered]) -> Ordered { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:211:3 [INFO] [stdout] | [INFO] [stdout] 211 | return Ok((*r1).clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - return Ok((*r1).clone()); [INFO] [stdout] 211 + Ok((*r1).clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:218:3 [INFO] [stdout] | [INFO] [stdout] 218 | return NFA::new(states,dfa.starting,dfa.alphabet.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 218 - return NFA::new(states,dfa.starting,dfa.alphabet.clone()); [INFO] [stdout] 218 + NFA::new(states,dfa.starting,dfa.alphabet.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:165:2 [INFO] [stdout] | [INFO] [stdout] 165 | return eqs; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 165 - return eqs; [INFO] [stdout] 165 + eqs [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:144:27 [INFO] [stdout] | [INFO] [stdout] 144 | fn get_equivalents(states:&Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 144 - fn get_equivalents(states:&Vec) -> Vec { [INFO] [stdout] 144 + fn get_equivalents(states:&[NFAState]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/nfa.rs:217:60 [INFO] [stdout] | [INFO] [stdout] 217 | let states:Vec = (&dfa.states).into_iter().map(|s| NFAState::from(s)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `NFAState::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/nfa.rs:217:44 [INFO] [stdout] | [INFO] [stdout] 217 | let states:Vec = (&dfa.states).into_iter().map(|s| NFAState::from(s)).collect(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:156:24 [INFO] [stdout] | [INFO] [stdout] 156 | let new = v1.join(&v2); [INFO] [stdout] | ^^^ help: change this to: `v2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:224:3 [INFO] [stdout] | [INFO] [stdout] 224 | / ... return match ®.tree { [INFO] [stdout] 225 | | ... None => NFA::get_never_accept(reg.alphabet.clone()), [INFO] [stdout] 226 | | ... Some(tree) => tree.to_nfa(reg.alphabet.clone()).expect("This only fails if two generated alphabets are different, which... [INFO] [stdout] 227 | | ... }; [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 ~ match ®.tree { [INFO] [stdout] 225 ~ None => NFA::get_never_accept(reg.alphabet.clone()), [INFO] [stdout] 226 ~ Some(tree) => tree.to_nfa(reg.alphabet.clone()).expect("This only fails if two generated alphabets are different, which indicates a programming error, not a user error") [INFO] [stdout] 227 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:177:43 [INFO] [stdout] | [INFO] [stdout] 177 | accepts.push(is_accepting_vec(nfa_states,&state,equivalents)); [INFO] [stdout] | ^^^^^^ help: change this to: `state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:261:3 [INFO] [stdout] | [INFO] [stdout] 261 | return Ok(NFA::new(states,starting,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 261 - return Ok(NFA::new(states,starting,alphabet)); [INFO] [stdout] 261 + Ok(NFA::new(states,starting,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:188:2 [INFO] [stdout] | [INFO] [stdout] 188 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 188 - return false; [INFO] [stdout] 188 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:181:28 [INFO] [stdout] | [INFO] [stdout] 181 | fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] 181 + fn is_accepting(nfa_states:&[NFAState],input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:181:77 [INFO] [stdout] | [INFO] [stdout] 181 | fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 181 - fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&Vec) -> bool { [INFO] [stdout] 181 + fn is_accepting(nfa_states:&Vec,input_state:&StateNum,equivalents:&[Ordered]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:197:2 [INFO] [stdout] | [INFO] [stdout] 197 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 197 - return false; [INFO] [stdout] 197 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/dfa.rs:193:30 [INFO] [stdout] | [INFO] [stdout] 193 | if is_accepting(nfa_states,&state,equivalents) { [INFO] [stdout] | ^^^^^^ help: change this to: `state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:237:25 [INFO] [stdout] | [INFO] [stdout] 237 | let alphabet:String = match crate::get_alphabet(&lines[0]){ [INFO] [stdout] | _______________________________^ [INFO] [stdout] 238 | | Err(e) => return Err(e), [INFO] [stdout] 239 | | Ok(am) => am [INFO] [stdout] 240 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&lines[0])?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:256:16 [INFO] [stdout] | [INFO] [stdout] 256 | states.push(match NFAState::from_line(line,&alphabet_hm,num_lines-2) { [INFO] [stdout] | _________________________^ [INFO] [stdout] 257 | | Ok(nfastate) => nfastate, [INFO] [stdout] 258 | | Err(e) => return Err(e) [INFO] [stdout] 259 | | }); [INFO] [stdout] | |_____________^ help: try instead: `NFAState::from_line(line,&alphabet_hm,num_lines-2)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return Ok(alphabet.iter().cloned().collect()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return Ok(alphabet.iter().cloned().collect()); [INFO] [stdout] 42 + Ok(alphabet.iter().cloned().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/dfa.rs:252:3 [INFO] [stdout] | [INFO] [stdout] 252 | / return Ok( [INFO] [stdout] 253 | | Self::new( [INFO] [stdout] 254 | | next_states, [INFO] [stdout] 255 | | accept) [INFO] [stdout] 256 | | ); [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 252 ~ Ok( [INFO] [stdout] 253 ~ Self::new( [INFO] [stdout] 254 ~ next_states, [INFO] [stdout] 255 ~ accept) [INFO] [stdout] 256 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/dfa.rs:226:20 [INFO] [stdout] | [INFO] [stdout] 226 | fn from_line(line:&String,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 226 - fn from_line(line:&String,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] 226 + fn from_line(line:&str,num_letters:usize,max_state:StateNum) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/dfa.rs:233:56 [INFO] [stdout] | [INFO] [stdout] 233 | for next_state_str in (&split_state[0..num_letters]).into_iter(){ [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:66:3 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok(Self::new(alphabet, Some(regex))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 66 - return Ok(Self::new(alphabet, Some(regex))); [INFO] [stdout] 66 + Ok(Self::new(alphabet, Some(regex))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/dfa.rs:246:3 [INFO] [stdout] | [INFO] [stdout] 246 | let accept:bool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `accept` here and remove the assignments from the `match` arms [INFO] [stdout] | [INFO] [stdout] 246 ~ [INFO] [stdout] 247 ~ let accept:bool = match split_state[num_letters].parse() { [INFO] [stdout] 248 ~ Ok(a) => a, [INFO] [stdout] 249 | Err(_) => return Err("Poorly formatted accepting/not accepting value.".to_string()), [INFO] [stdout] 250 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 56 | let alphabet = match crate::get_alphabet(&alphabet) { [INFO] [stdout] | ________________________^ [INFO] [stdout] 57 | | Err(e) => return Err(e), [INFO] [stdout] 58 | | Ok(ab) => ab [INFO] [stdout] 59 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:72:3 [INFO] [stdout] | [INFO] [stdout] 72 | return crate::int_nfa_reg::nfa_to_regex(nfa); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - return crate::int_nfa_reg::nfa_to_regex(nfa); [INFO] [stdout] 72 + crate::int_nfa_reg::nfa_to_regex(nfa) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | return Ok(sub); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 - return Ok(sub); [INFO] [stdout] 117 + Ok(sub) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:62:3 [INFO] [stdout] | [INFO] [stdout] 62 | return Ok((transition_num,value)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 62 - return Ok((transition_num,value)); [INFO] [stdout] 62 + Ok((transition_num,value)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sub = match r.to_nfa(alphabet) { [INFO] [stdout] | ___________________^ [INFO] [stdout] 113 | | Ok(r) => r, [INFO] [stdout] 114 | | Err(e) => return Err(e) [INFO] [stdout] 115 | | }; [INFO] [stdout] | |_____^ help: try instead: `r.to_nfa(alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:129:2 [INFO] [stdout] | [INFO] [stdout] 129 | return NFA::concat(&mut r1,&mut r2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return NFA::concat(&mut r1,&mut r2); [INFO] [stdout] 129 + NFA::concat(&mut r1,&mut r2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 121 | let mut r1 = match r1.to_nfa(alphabet.clone()) { [INFO] [stdout] | __________________^ [INFO] [stdout] 122 | | Ok(r) => r, [INFO] [stdout] 123 | | Err(e) => return Err(e) [INFO] [stdout] 124 | | }; [INFO] [stdout] | |_____^ help: try instead: `r1.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:125:18 [INFO] [stdout] | [INFO] [stdout] 125 | let mut r2 = match r2.to_nfa(alphabet) { [INFO] [stdout] | __________________^ [INFO] [stdout] 126 | | Ok(r) => r, [INFO] [stdout] 127 | | Err(e) => return Err(e) [INFO] [stdout] 128 | | }; [INFO] [stdout] | |_____^ help: try instead: `r2.to_nfa(alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:141:2 [INFO] [stdout] | [INFO] [stdout] 141 | return NFA::or(&mut r1,&mut r2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return NFA::or(&mut r1,&mut r2); [INFO] [stdout] 141 + NFA::or(&mut r1,&mut r2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:91:3 [INFO] [stdout] | [INFO] [stdout] 91 | return Ok(NFAState::new(transitions,accepting)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 91 - return Ok(NFAState::new(transitions,accepting)); [INFO] [stdout] 91 + Ok(NFAState::new(transitions,accepting)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | let mut r1 = match r1.to_nfa(alphabet.clone()) { [INFO] [stdout] | ______________________^ [INFO] [stdout] 134 | | Ok(r) => r, [INFO] [stdout] 135 | | Err(e) => return Err(e) [INFO] [stdout] 136 | | }; [INFO] [stdout] | |_____^ help: try instead: `r1.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:137:18 [INFO] [stdout] | [INFO] [stdout] 137 | let mut r2 = match r2.to_nfa(alphabet.clone()) { [INFO] [stdout] | __________________^ [INFO] [stdout] 138 | | Ok(r) => r, [INFO] [stdout] 139 | | Err(e) => return Err(e) [INFO] [stdout] 140 | | }; [INFO] [stdout] | |_____^ help: try instead: `r2.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BRT` contains a capitalized acronym [INFO] [stdout] --> src/regex.rs:144:6 [INFO] [stdout] | [INFO] [stdout] 144 | type BRT = Box; [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Brt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/nfa.rs:70:52 [INFO] [stdout] | [INFO] [stdout] 70 | for transition in (&comma_split[0..num_parts-1]).into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:71:33 [INFO] [stdout] | [INFO] [stdout] 71 | let (transition_num,value) = match NFAState::get_transition(transition,alphabet,max_state) { [INFO] [stdout] | __________________________________________^ [INFO] [stdout] 72 | | Ok(result) => result, [INFO] [stdout] 73 | | Err(e) => return Err(e) [INFO] [stdout] 74 | | }; [INFO] [stdout] | |_____________^ help: try instead: `NFAState::get_transition(transition,alphabet,max_state)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:159:3 [INFO] [stdout] | [INFO] [stdout] 159 | / return match &self { [INFO] [stdout] 160 | | Empty => NFA::get_accept_empty(a), [INFO] [stdout] 161 | | Single(i) => NFA::get_accept_single((*i).into(),a), [INFO] [stdout] 162 | | KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] ... | [INFO] [stdout] 166 | | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] 167 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 ~ match &self { [INFO] [stdout] 160 ~ Empty => NFA::get_accept_empty(a), [INFO] [stdout] 161 ~ Single(i) => NFA::get_accept_single((*i).into(),a), [INFO] [stdout] 162 ~ KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] 163 ~ KleenePlus(r) => get_concat(&(**r).clone(),&KleeneStar(Box::new((**r).clone())),a), [INFO] [stdout] 164 ~ Optional(r) => get_or(&Empty, &**r, a), [INFO] [stdout] 165 ~ Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] 166 ~ Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/regex.rs:162:31 [INFO] [stdout] | [INFO] [stdout] 162 | KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 162 - KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] 162 + KleeneStar(r) => get_kstar(r, a), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 162 | KleeneStar(r) => get_kstar(&**r, a), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:164:34 [INFO] [stdout] | [INFO] [stdout] 164 | Optional(r) => get_or(&Empty, &**r, a), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `transitions` [INFO] [stdout] --> src/nfa.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 86 | for i in 0..transitions.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 86 - for i in 0..transitions.len() { [INFO] [stdout] 86 + for in &mut transitions { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:112:3 [INFO] [stdout] | [INFO] [stdout] 112 | return output; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 112 - return output; [INFO] [stdout] 112 + output [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:165:34 [INFO] [stdout] | [INFO] [stdout] 165 | Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:165:41 [INFO] [stdout] | [INFO] [stdout] 165 | Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:166:27 [INFO] [stdout] | [INFO] [stdout] 166 | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:166:33 [INFO] [stdout] | [INFO] [stdout] 166 | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:123:3 [INFO] [stdout] | [INFO] [stdout] 123 | return NFAState::new(transitions,dfastate.accepting); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return NFAState::new(transitions,dfastate.accepting); [INFO] [stdout] 123 + NFAState::new(transitions,dfastate.accepting) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NFA` contains a capitalized acronym [INFO] [stdout] --> src/nfa.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | pub struct NFA { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Nfa` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:199:43 [INFO] [stdout] | [INFO] [stdout] 199 | Asterisk => Self::add_unary(input, i, |r| KleeneStar(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `KleeneStar` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:200:39 [INFO] [stdout] | [INFO] [stdout] 200 | Plus => Self::add_unary(input, i, |r| KleenePlus(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `KleenePlus` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:201:40 [INFO] [stdout] | [INFO] [stdout] 201 | QMark => Self::add_unary(input, i, |r| Optional(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Optional` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:142:3 [INFO] [stdout] | [INFO] [stdout] 142 | return NFA::new(states,starting,alphabet); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 - return NFA::new(states,starting,alphabet); [INFO] [stdout] 142 + NFA::new(states,starting,alphabet) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:147:3 [INFO] [stdout] | [INFO] [stdout] 147 | return Ok(NFA::new(vec![state],0,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 - return Ok(NFA::new(vec![state],0,alphabet)); [INFO] [stdout] 147 + Ok(NFA::new(vec![state],0,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/regex.rs:228:6 [INFO] [stdout] | [INFO] [stdout] 228 | i = i - 1; // so i is still pointing to the Or. [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/regex.rs:253:4 [INFO] [stdout] | [INFO] [stdout] 253 | i = i + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:271:3 [INFO] [stdout] | [INFO] [stdout] 271 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 271 - return result; [INFO] [stdout] 271 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:289:3 [INFO] [stdout] | [INFO] [stdout] 289 | return s1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 289 - return s1; [INFO] [stdout] 289 + s1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:293:3 [INFO] [stdout] | [INFO] [stdout] 293 | / return match &self { [INFO] [stdout] 294 | | Empty => String::new(), [INFO] [stdout] 295 | | Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] 296 | | KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] ... | [INFO] [stdout] 300 | | Or((r1,r2)) => format!("{}|{}",r1.to_string(alphabet),r2.to_string(alphabet)), [INFO] [stdout] 301 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 293 ~ match &self { [INFO] [stdout] 294 ~ Empty => String::new(), [INFO] [stdout] 295 ~ Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] 296 ~ KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] 297 ~ KleenePlus(r) => Self::opp_to_string('+',&**r,alphabet), [INFO] [stdout] 298 ~ Optional(r) => Self::opp_to_string('?', &**r, alphabet), [INFO] [stdout] 299 ~ Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] 300 ~ Or((r1,r2)) => format!("{}|{}",r1.to_string(alphabet),r2.to_string(alphabet)), [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:167:3 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(NFA::new(vec![start,end],0,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(NFA::new(vec![start,end],0,alphabet)); [INFO] [stdout] 167 + Ok(NFA::new(vec![start,end],0,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:295:26 [INFO] [stdout] | [INFO] [stdout] 295 | Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] | ^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:296:45 [INFO] [stdout] | [INFO] [stdout] 296 | KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:297:45 [INFO] [stdout] | [INFO] [stdout] 297 | KleenePlus(r) => Self::opp_to_string('+',&**r,alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:298:44 [INFO] [stdout] | [INFO] [stdout] 298 | Optional(r) => Self::opp_to_string('?', &**r, alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:299:46 [INFO] [stdout] | [INFO] [stdout] 299 | Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:299:52 [INFO] [stdout] | [INFO] [stdout] 299 | Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:326:3 [INFO] [stdout] | [INFO] [stdout] 326 | / return if let Reg(r) = &input[0] { [INFO] [stdout] 327 | | r.clone() [INFO] [stdout] 328 | | } else { [INFO] [stdout] 329 | | Empty //can't be reached due to earlier code [INFO] [stdout] 330 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 326 ~ if let Reg(r) = &input[0] { [INFO] [stdout] 327 ~ r.clone() [INFO] [stdout] 328 ~ } else { [INFO] [stdout] 329 ~ Empty //can't be reached due to earlier code [INFO] [stdout] 330 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/regex.rs:308:6 [INFO] [stdout] | [INFO] [stdout] 308 | if input.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:17:2 [INFO] [stdout] | [INFO] [stdout] 17 | return Regex::new(alphabet,rt.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 17 - return Regex::new(alphabet,rt.clone()); [INFO] [stdout] 17 + Regex::new(alphabet,rt.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/nfa.rs:174:6 [INFO] [stdout] | [INFO] [stdout] 174 | *i = *i + by; [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `*i += by` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/int_nfa_reg.rs:20:23 [INFO] [stdout] | [INFO] [stdout] 20 | fn bypass_state(table:&mut Vec>>,line:StateNum) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 20 - fn bypass_state(table:&mut Vec>>,line:StateNum) { [INFO] [stdout] 20 + fn bypass_state(table:&mut [Vec>],line:StateNum) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `state` is only used to index `table` [INFO] [stdout] --> src/int_nfa_reg.rs:26:15 [INFO] [stdout] | [INFO] [stdout] 26 | for state in (line+1)..table.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for state in (line+1)..table.len() { [INFO] [stdout] 26 + for in table.iter_mut().skip((line+1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:195:3 [INFO] [stdout] | [INFO] [stdout] 195 | return Ok((*r1).clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 195 - return Ok((*r1).clone()); [INFO] [stdout] 195 + Ok((*r1).clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:63:2 [INFO] [stdout] | [INFO] [stdout] 63 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 - return result; [INFO] [stdout] 63 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:211:3 [INFO] [stdout] | [INFO] [stdout] 211 | return Ok((*r1).clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - return Ok((*r1).clone()); [INFO] [stdout] 211 + Ok((*r1).clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `line` [INFO] [stdout] --> src/int_nfa_reg.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | for i in 0..line.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 55 - for i in 0..line.len() { [INFO] [stdout] 55 + for (i, ) in line.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:74:2 [INFO] [stdout] | [INFO] [stdout] 74 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - return result; [INFO] [stdout] 74 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:218:3 [INFO] [stdout] | [INFO] [stdout] 218 | return NFA::new(states,dfa.starting,dfa.alphabet.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 218 - return NFA::new(states,dfa.starting,dfa.alphabet.clone()); [INFO] [stdout] 218 + NFA::new(states,dfa.starting,dfa.alphabet.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/int_nfa_reg.rs:72:61 [INFO] [stdout] | [INFO] [stdout] 72 | let mut result:Vec>> = (&nfa.states).into_iter().map(|s| get_1d_array(&s,size)).collect(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/int_nfa_reg.rs:72:94 [INFO] [stdout] | [INFO] [stdout] 72 | let mut result:Vec>> = (&nfa.states).into_iter().map(|s| get_1d_array(&s,size)).collect(); [INFO] [stdout] | ^^ help: change this to: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/nfa.rs:217:60 [INFO] [stdout] | [INFO] [stdout] 217 | let states:Vec = (&dfa.states).into_iter().map(|s| NFAState::from(s)).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `NFAState::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/nfa.rs:217:44 [INFO] [stdout] | [INFO] [stdout] 217 | let states:Vec = (&dfa.states).into_iter().map(|s| NFAState::from(s)).collect(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:112:2 [INFO] [stdout] | [INFO] [stdout] 112 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 112 - return result; [INFO] [stdout] 112 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:224:3 [INFO] [stdout] | [INFO] [stdout] 224 | / ... return match ®.tree { [INFO] [stdout] 225 | | ... None => NFA::get_never_accept(reg.alphabet.clone()), [INFO] [stdout] 226 | | ... Some(tree) => tree.to_nfa(reg.alphabet.clone()).expect("This only fails if two generated alphabets are different, which... [INFO] [stdout] 227 | | ... }; [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 ~ match ®.tree { [INFO] [stdout] 225 ~ None => NFA::get_never_accept(reg.alphabet.clone()), [INFO] [stdout] 226 ~ Some(tree) => tree.to_nfa(reg.alphabet.clone()).expect("This only fails if two generated alphabets are different, which indicates a programming error, not a user error") [INFO] [stdout] 227 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nfa.rs:261:3 [INFO] [stdout] | [INFO] [stdout] 261 | return Ok(NFA::new(states,starting,alphabet)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 261 - return Ok(NFA::new(states,starting,alphabet)); [INFO] [stdout] 261 + Ok(NFA::new(states,starting,alphabet)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:237:25 [INFO] [stdout] | [INFO] [stdout] 237 | let alphabet:String = match crate::get_alphabet(&lines[0]){ [INFO] [stdout] | _______________________________^ [INFO] [stdout] 238 | | Err(e) => return Err(e), [INFO] [stdout] 239 | | Ok(am) => am [INFO] [stdout] 240 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&lines[0])?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/nfa.rs:256:16 [INFO] [stdout] | [INFO] [stdout] 256 | states.push(match NFAState::from_line(line,&alphabet_hm,num_lines-2) { [INFO] [stdout] | _________________________^ [INFO] [stdout] 257 | | Ok(nfastate) => nfastate, [INFO] [stdout] 258 | | Err(e) => return Err(e) [INFO] [stdout] 259 | | }); [INFO] [stdout] | |_____________^ help: try instead: `NFAState::from_line(line,&alphabet_hm,num_lines-2)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:42:3 [INFO] [stdout] | [INFO] [stdout] 42 | return Ok(alphabet.iter().cloned().collect()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return Ok(alphabet.iter().cloned().collect()); [INFO] [stdout] 42 + Ok(alphabet.iter().cloned().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:66:3 [INFO] [stdout] | [INFO] [stdout] 66 | return Ok(Self::new(alphabet, Some(regex))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 66 - return Ok(Self::new(alphabet, Some(regex))); [INFO] [stdout] 66 + Ok(Self::new(alphabet, Some(regex))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 56 | let alphabet = match crate::get_alphabet(&alphabet) { [INFO] [stdout] | ________________________^ [INFO] [stdout] 57 | | Err(e) => return Err(e), [INFO] [stdout] 58 | | Ok(ab) => ab [INFO] [stdout] 59 | | }; [INFO] [stdout] | |_________^ help: try instead: `crate::get_alphabet(&alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:72:3 [INFO] [stdout] | [INFO] [stdout] 72 | return crate::int_nfa_reg::nfa_to_regex(nfa); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - return crate::int_nfa_reg::nfa_to_regex(nfa); [INFO] [stdout] 72 + crate::int_nfa_reg::nfa_to_regex(nfa) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | return Ok(sub); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 - return Ok(sub); [INFO] [stdout] 117 + Ok(sub) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | let mut sub = match r.to_nfa(alphabet) { [INFO] [stdout] | ___________________^ [INFO] [stdout] 113 | | Ok(r) => r, [INFO] [stdout] 114 | | Err(e) => return Err(e) [INFO] [stdout] 115 | | }; [INFO] [stdout] | |_____^ help: try instead: `r.to_nfa(alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:129:2 [INFO] [stdout] | [INFO] [stdout] 129 | return NFA::concat(&mut r1,&mut r2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return NFA::concat(&mut r1,&mut r2); [INFO] [stdout] 129 + NFA::concat(&mut r1,&mut r2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:121:18 [INFO] [stdout] | [INFO] [stdout] 121 | let mut r1 = match r1.to_nfa(alphabet.clone()) { [INFO] [stdout] | __________________^ [INFO] [stdout] 122 | | Ok(r) => r, [INFO] [stdout] 123 | | Err(e) => return Err(e) [INFO] [stdout] 124 | | }; [INFO] [stdout] | |_____^ help: try instead: `r1.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:125:18 [INFO] [stdout] | [INFO] [stdout] 125 | let mut r2 = match r2.to_nfa(alphabet) { [INFO] [stdout] | __________________^ [INFO] [stdout] 126 | | Ok(r) => r, [INFO] [stdout] 127 | | Err(e) => return Err(e) [INFO] [stdout] 128 | | }; [INFO] [stdout] | |_____^ help: try instead: `r2.to_nfa(alphabet)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:141:2 [INFO] [stdout] | [INFO] [stdout] 141 | return NFA::or(&mut r1,&mut r2); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 141 - return NFA::or(&mut r1,&mut r2); [INFO] [stdout] 141 + NFA::or(&mut r1,&mut r2) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:133:19 [INFO] [stdout] | [INFO] [stdout] 133 | let mut r1 = match r1.to_nfa(alphabet.clone()) { [INFO] [stdout] | ______________________^ [INFO] [stdout] 134 | | Ok(r) => r, [INFO] [stdout] 135 | | Err(e) => return Err(e) [INFO] [stdout] 136 | | }; [INFO] [stdout] | |_____^ help: try instead: `r1.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/regex.rs:137:18 [INFO] [stdout] | [INFO] [stdout] 137 | let mut r2 = match r2.to_nfa(alphabet.clone()) { [INFO] [stdout] | __________________^ [INFO] [stdout] 138 | | Ok(r) => r, [INFO] [stdout] 139 | | Err(e) => return Err(e) [INFO] [stdout] 140 | | }; [INFO] [stdout] | |_____^ help: try instead: `r2.to_nfa(alphabet.clone())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:69:3 [INFO] [stdout] | [INFO] [stdout] 69 | / return match input_type { [INFO] [stdout] 70 | | InputType::Dfa => Automata::new_dfa(lines), [INFO] [stdout] 71 | | InputType::Nfa => Automata::new_nfa(lines), [INFO] [stdout] 72 | | InputType::Regex => Automata::new_regex(cli.regex.as_deref().unwrap()) [INFO] [stdout] 73 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 69 ~ match input_type { [INFO] [stdout] 70 ~ InputType::Dfa => Automata::new_dfa(lines), [INFO] [stdout] 71 ~ InputType::Nfa => Automata::new_nfa(lines), [INFO] [stdout] 72 ~ InputType::Regex => Automata::new_regex(cli.regex.as_deref().unwrap()) [INFO] [stdout] 73 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `BRT` contains a capitalized acronym [INFO] [stdout] --> src/regex.rs:144:6 [INFO] [stdout] | [INFO] [stdout] 144 | type BRT = Box; [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Brt` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:55:30 [INFO] [stdout] | [INFO] [stdout] 55 | let input_type:InputType = match get_input_type(cli) { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 56 | | Err(e) => return Err(e), [INFO] [stdout] 57 | | Ok(it) => it [INFO] [stdout] 58 | | }; [INFO] [stdout] | |_________^ help: try instead: `get_input_type(cli)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:60:3 [INFO] [stdout] | [INFO] [stdout] 60 | let lines:Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `lines` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 60 ~ [INFO] [stdout] 61 ~ let lines:Vec = if input_type == InputType::Regex { [INFO] [stdout] 62 ~ Vec::new() [INFO] [stdout] 63 | } else { [INFO] [stdout] 64 ~ match read_input_file(cli.input.as_deref().unwrap()) { [INFO] [stdout] 65 | Err(e) => return Err(e), [INFO] [stdout] 66 | Ok(l) => l [INFO] [stdout] 67 ~ } [INFO] [stdout] 68 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | lines = match read_input_file(cli.input.as_deref().unwrap()) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 65 | | Err(e) => return Err(e), [INFO] [stdout] 66 | | Ok(l) => l [INFO] [stdout] 67 | | }; [INFO] [stdout] | |_____________^ help: try instead: `read_input_file(cli.input.as_deref().unwrap())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:159:3 [INFO] [stdout] | [INFO] [stdout] 159 | / return match &self { [INFO] [stdout] 160 | | Empty => NFA::get_accept_empty(a), [INFO] [stdout] 161 | | Single(i) => NFA::get_accept_single((*i).into(),a), [INFO] [stdout] 162 | | KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] ... | [INFO] [stdout] 166 | | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] 167 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 159 ~ match &self { [INFO] [stdout] 160 ~ Empty => NFA::get_accept_empty(a), [INFO] [stdout] 161 ~ Single(i) => NFA::get_accept_single((*i).into(),a), [INFO] [stdout] 162 ~ KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] 163 ~ KleenePlus(r) => get_concat(&(**r).clone(),&KleeneStar(Box::new((**r).clone())),a), [INFO] [stdout] 164 ~ Optional(r) => get_or(&Empty, &**r, a), [INFO] [stdout] 165 ~ Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] 166 ~ Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:83:3 [INFO] [stdout] | [INFO] [stdout] 83 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 83 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 83 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/regex.rs:162:31 [INFO] [stdout] | [INFO] [stdout] 162 | KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 162 - KleeneStar(r) => get_kstar(&*r, a), [INFO] [stdout] 162 + KleeneStar(r) => get_kstar(r, a), [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 162 | KleeneStar(r) => get_kstar(&**r, a), [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:93:3 [INFO] [stdout] | [INFO] [stdout] 93 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 93 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 93 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:164:34 [INFO] [stdout] | [INFO] [stdout] 164 | Optional(r) => get_or(&Empty, &**r, a), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:165:34 [INFO] [stdout] | [INFO] [stdout] 165 | Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:165:41 [INFO] [stdout] | [INFO] [stdout] 165 | Concat((r1,r2)) => get_concat(&**r1, &**r2,a), [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:166:27 [INFO] [stdout] | [INFO] [stdout] 166 | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:166:33 [INFO] [stdout] | [INFO] [stdout] 166 | Or((r1, r2)) => get_or(&**r1,&**r2,a) [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:103:3 [INFO] [stdout] | [INFO] [stdout] 103 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 103 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 103 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:108:6 [INFO] [stdout] | [INFO] [stdout] 108 | if !self.dfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.dfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:109:7 [INFO] [stdout] | [INFO] [stdout] 109 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:120:3 [INFO] [stdout] | [INFO] [stdout] 120 | return self.dfa.as_ref().unwrap().run(word); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - return self.dfa.as_ref().unwrap().run(word); [INFO] [stdout] 120 + self.dfa.as_ref().unwrap().run(word) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:128:3 [INFO] [stdout] | [INFO] [stdout] 128 | / return match print_to_file(self.dfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 129 | | Ok(()) => { [INFO] [stdout] 130 | | println!("DFA written to {}",address); [INFO] [stdout] 131 | | Ok(()) [INFO] [stdout] 132 | | }, [INFO] [stdout] 133 | | Err(e) => Err(e) [INFO] [stdout] 134 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 ~ match print_to_file(self.dfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 129 ~ Ok(()) => { [INFO] [stdout] 130 ~ println!("DFA written to {}",address); [INFO] [stdout] 131 ~ Ok(()) [INFO] [stdout] 132 ~ }, [INFO] [stdout] 133 ~ Err(e) => Err(e) [INFO] [stdout] 134 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:141:6 [INFO] [stdout] | [INFO] [stdout] 141 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:147:3 [INFO] [stdout] | [INFO] [stdout] 147 | / return match print_to_file(self.nfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 148 | | Ok(()) => { [INFO] [stdout] 149 | | println!("NFA written to {}",address); [INFO] [stdout] 150 | | Ok(()) [INFO] [stdout] 151 | | }, [INFO] [stdout] 152 | | Err(e) => Err(e) [INFO] [stdout] 153 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 ~ match print_to_file(self.nfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 148 ~ Ok(()) => { [INFO] [stdout] 149 ~ println!("NFA written to {}",address); [INFO] [stdout] 150 ~ Ok(()) [INFO] [stdout] 151 ~ }, [INFO] [stdout] 152 ~ Err(e) => Err(e) [INFO] [stdout] 153 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:199:43 [INFO] [stdout] | [INFO] [stdout] 199 | Asterisk => Self::add_unary(input, i, |r| KleeneStar(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `KleeneStar` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:200:39 [INFO] [stdout] | [INFO] [stdout] 200 | Plus => Self::add_unary(input, i, |r| KleenePlus(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `KleenePlus` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/regex.rs:201:40 [INFO] [stdout] | [INFO] [stdout] 201 | QMark => Self::add_unary(input, i, |r| Optional(r)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Optional` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:160:6 [INFO] [stdout] | [INFO] [stdout] 160 | if !self.regex.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.regex.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:161:7 [INFO] [stdout] | [INFO] [stdout] 161 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:167:3 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(()); [INFO] [stdout] 167 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:166:55 [INFO] [stdout] | [INFO] [stdout] 166 | println!("Regex is: {}",self.regex.as_ref().unwrap().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/regex.rs:228:6 [INFO] [stdout] | [INFO] [stdout] 228 | i = i - 1; // so i is still pointing to the Or. [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i -= 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 199 - }); [INFO] [stdout] 200 - return; [INFO] [stdout] 199 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/regex.rs:253:4 [INFO] [stdout] | [INFO] [stdout] 253 | i = i + 1; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:271:3 [INFO] [stdout] | [INFO] [stdout] 271 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 271 - return result; [INFO] [stdout] 271 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:238:2 [INFO] [stdout] | [INFO] [stdout] 238 | return Rslt::Nop; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return Rslt::Nop; [INFO] [stdout] 238 + Rslt::Nop [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:289:3 [INFO] [stdout] | [INFO] [stdout] 289 | return s1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 289 - return s1; [INFO] [stdout] 289 + s1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:244:2 [INFO] [stdout] | [INFO] [stdout] 244 | / return match &cli.input.as_deref() { [INFO] [stdout] 245 | | None => match is_regex { [INFO] [stdout] 246 | | true => Ok(InputType::Regex), [INFO] [stdout] 247 | | false => Err("No automata or regex provided.".to_string()) [INFO] [stdout] ... | [INFO] [stdout] 259 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 ~ match &cli.input.as_deref() { [INFO] [stdout] 245 ~ None => match is_regex { [INFO] [stdout] 246 ~ true => Ok(InputType::Regex), [INFO] [stdout] 247 ~ false => Err("No automata or regex provided.".to_string()) [INFO] [stdout] 248 ~ }, [INFO] [stdout] 249 ~ Some(address) => match is_regex { [INFO] [stdout] 250 ~ true => Err("Cannot input both regex and other automata".to_string()), [INFO] [stdout] 251 ~ false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] 252 ~ "DFA" => Ok(InputType::Dfa), [INFO] [stdout] 253 ~ "NFA" => Ok(InputType::Nfa), [INFO] [stdout] 254 ~ _ => { [INFO] [stdout] 255 ~ return Err("File type is unsupported.".to_string()); [INFO] [stdout] 256 ~ } [INFO] [stdout] 257 ~ } [INFO] [stdout] 258 ~ } [INFO] [stdout] 259 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:293:3 [INFO] [stdout] | [INFO] [stdout] 293 | / return match &self { [INFO] [stdout] 294 | | Empty => String::new(), [INFO] [stdout] 295 | | Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] 296 | | KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] ... | [INFO] [stdout] 300 | | Or((r1,r2)) => format!("{}|{}",r1.to_string(alphabet),r2.to_string(alphabet)), [INFO] [stdout] 301 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 293 ~ match &self { [INFO] [stdout] 294 ~ Empty => String::new(), [INFO] [stdout] 295 ~ Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] 296 ~ KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] 297 ~ KleenePlus(r) => Self::opp_to_string('+',&**r,alphabet), [INFO] [stdout] 298 ~ Optional(r) => Self::opp_to_string('?', &**r, alphabet), [INFO] [stdout] 299 ~ Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] 300 ~ Or((r1,r2)) => format!("{}|{}",r1.to_string(alphabet),r2.to_string(alphabet)), [INFO] [stdout] 301 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/main.rs:251:19 [INFO] [stdout] | [INFO] [stdout] 251 | false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 - false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] 251 + false => match address.split('.').next_back().unwrap().to_uppercase().as_str() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:295:26 [INFO] [stdout] | [INFO] [stdout] 295 | Single(i) => alphabet[(*i).0].to_string(), [INFO] [stdout] | ^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:296:45 [INFO] [stdout] | [INFO] [stdout] 296 | KleeneStar(r) => Self::opp_to_string('*',&**r,alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:297:45 [INFO] [stdout] | [INFO] [stdout] 297 | KleenePlus(r) => Self::opp_to_string('+',&**r,alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:271:5 [INFO] [stdout] | [INFO] [stdout] 271 | return Ok(lines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 271 - return Ok(lines); [INFO] [stdout] 271 + Ok(lines) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:298:44 [INFO] [stdout] | [INFO] [stdout] 298 | Optional(r) => Self::opp_to_string('?', &**r, alphabet), [INFO] [stdout] | ^^^^ help: try: `r` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:299:46 [INFO] [stdout] | [INFO] [stdout] 299 | Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] | ^^^^^ help: try: `r1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/regex.rs:299:52 [INFO] [stdout] | [INFO] [stdout] 299 | Concat((r1,r2)) => Self::concat_to_string(&**r1,&**r2,alphabet), [INFO] [stdout] | ^^^^^ help: try: `r2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 281 - return Ok(()); [INFO] [stdout] 281 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:296:2 [INFO] [stdout] | [INFO] [stdout] 296 | return Ok(result.into_iter().collect()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return Ok(result.into_iter().collect()); [INFO] [stdout] 296 + Ok(result.into_iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:311:2 [INFO] [stdout] | [INFO] [stdout] 311 | return alphabet_hashmap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 311 - return alphabet_hashmap; [INFO] [stdout] 311 + alphabet_hashmap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/regex.rs:326:3 [INFO] [stdout] | [INFO] [stdout] 326 | / return if let Reg(r) = &input[0] { [INFO] [stdout] 327 | | r.clone() [INFO] [stdout] 328 | | } else { [INFO] [stdout] 329 | | Empty //can't be reached due to earlier code [INFO] [stdout] 330 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 326 ~ if let Reg(r) = &input[0] { [INFO] [stdout] 327 ~ r.clone() [INFO] [stdout] 328 ~ } else { [INFO] [stdout] 329 ~ Empty //can't be reached due to earlier code [INFO] [stdout] 330 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/regex.rs:308:6 [INFO] [stdout] | [INFO] [stdout] 308 | if input.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/main.rs:306:3 [INFO] [stdout] | [INFO] [stdout] 306 | / if !alphabet_hashmap.contains_key(&c) { [INFO] [stdout] 307 | | alphabet_hashmap.insert(c,i); [INFO] [stdout] 308 | | i = Index0(i.0 + 1); [INFO] [stdout] 309 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 306 ~ if let std::collections::hash_map::Entry::Vacant(e) = alphabet_hashmap.entry(c) { [INFO] [stdout] 307 ~ e.insert(i); [INFO] [stdout] 308 ~ i = Index0(i.0 + 1); [INFO] [stdout] 309 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:17:2 [INFO] [stdout] | [INFO] [stdout] 17 | return Regex::new(alphabet,rt.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 17 - return Regex::new(alphabet,rt.clone()); [INFO] [stdout] 17 + Regex::new(alphabet,rt.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/int_nfa_reg.rs:20:23 [INFO] [stdout] | [INFO] [stdout] 20 | fn bypass_state(table:&mut Vec>>,line:StateNum) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 20 - fn bypass_state(table:&mut Vec>>,line:StateNum) { [INFO] [stdout] 20 + fn bypass_state(table:&mut [Vec>],line:StateNum) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:322:3 [INFO] [stdout] | [INFO] [stdout] 322 | return Self(i1-1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 322 - return Self(i1-1); [INFO] [stdout] 322 + Self(i1-1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:328:3 [INFO] [stdout] | [INFO] [stdout] 328 | return Self(i0+1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 328 - return Self(i0+1); [INFO] [stdout] 328 + Self(i0+1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `state` is only used to index `table` [INFO] [stdout] --> src/int_nfa_reg.rs:26:15 [INFO] [stdout] | [INFO] [stdout] 26 | for state in (line+1)..table.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 26 - for state in (line+1)..table.len() { [INFO] [stdout] 26 + for in table.iter_mut().skip((line+1)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:382:2 [INFO] [stdout] | [INFO] [stdout] 382 | return Self(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 382 - return Self(result); [INFO] [stdout] 382 + Self(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:340:5 [INFO] [stdout] | [INFO] [stdout] 340 | if v1.len()==0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v1.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:63:2 [INFO] [stdout] | [INFO] [stdout] 63 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 - return result; [INFO] [stdout] 63 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:342:12 [INFO] [stdout] | [INFO] [stdout] 342 | } else if v2.len()==0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v2.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `line` [INFO] [stdout] --> src/int_nfa_reg.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | for i in 0..line.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 55 - for i in 0..line.len() { [INFO] [stdout] 55 + for (i, ) in line.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/main.rs:359:25 [INFO] [stdout] | [INFO] [stdout] 359 | } else if j==v2.len() { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 360 | | consider_v1 = true; [INFO] [stdout] 361 | | } else if v1[i]<=v2[j] { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/main.rs:361:26 [INFO] [stdout] | [INFO] [stdout] 361 | } else if v1[i]<=v2[j] { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 362 | | consider_v1 = true; [INFO] [stdout] 363 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:74:2 [INFO] [stdout] | [INFO] [stdout] 74 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - return result; [INFO] [stdout] 74 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/main.rs:361:10 [INFO] [stdout] | [INFO] [stdout] 361 | } else if v1[i]<=v2[j] { [INFO] [stdout] | ________________^ [INFO] [stdout] 362 | | consider_v1 = true; [INFO] [stdout] 363 | | } else { [INFO] [stdout] 364 | | consider_v1 = false; [INFO] [stdout] 365 | | } [INFO] [stdout] | |_________^ help: you can reduce it to: `{ consider_v1 = v1[i] <= v2[j]; }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/int_nfa_reg.rs:72:61 [INFO] [stdout] | [INFO] [stdout] 72 | let mut result:Vec>> = (&nfa.states).into_iter().map(|s| get_1d_array(&s,size)).collect(); [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/int_nfa_reg.rs:72:94 [INFO] [stdout] | [INFO] [stdout] 72 | let mut result:Vec>> = (&nfa.states).into_iter().map(|s| get_1d_array(&s,size)).collect(); [INFO] [stdout] | ^^ help: change this to: `s` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:368:5 [INFO] [stdout] | [INFO] [stdout] 368 | i=i+1 [INFO] [stdout] | ^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:371:5 [INFO] [stdout] | [INFO] [stdout] 371 | i=i+1; [INFO] [stdout] | ^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/int_nfa_reg.rs:112:2 [INFO] [stdout] | [INFO] [stdout] 112 | return result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 112 - return result; [INFO] [stdout] 112 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | j=j+1 [INFO] [stdout] | ^^^^^ help: replace it with: `j += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:378:5 [INFO] [stdout] | [INFO] [stdout] 378 | j=j+1; [INFO] [stdout] | ^^^^^ help: replace it with: `j += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/main.rs:286:24 [INFO] [stdout] | [INFO] [stdout] 286 | let invalid_letters = vec![':',',']; [INFO] [stdout] | ^^^^^^^^^^^^^ help: you can use an array directly: `[':',',']` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:69:3 [INFO] [stdout] | [INFO] [stdout] 69 | / return match input_type { [INFO] [stdout] 70 | | InputType::Dfa => Automata::new_dfa(lines), [INFO] [stdout] 71 | | InputType::Nfa => Automata::new_nfa(lines), [INFO] [stdout] 72 | | InputType::Regex => Automata::new_regex(cli.regex.as_deref().unwrap()) [INFO] [stdout] 73 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 69 ~ match input_type { [INFO] [stdout] 70 ~ InputType::Dfa => Automata::new_dfa(lines), [INFO] [stdout] 71 ~ InputType::Nfa => Automata::new_nfa(lines), [INFO] [stdout] 72 ~ InputType::Regex => Automata::new_regex(cli.regex.as_deref().unwrap()) [INFO] [stdout] 73 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:55:30 [INFO] [stdout] | [INFO] [stdout] 55 | let input_type:InputType = match get_input_type(cli) { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 56 | | Err(e) => return Err(e), [INFO] [stdout] 57 | | Ok(it) => it [INFO] [stdout] 58 | | }; [INFO] [stdout] | |_________^ help: try instead: `get_input_type(cli)?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:60:3 [INFO] [stdout] | [INFO] [stdout] 60 | let lines:Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `lines` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 60 ~ [INFO] [stdout] 61 ~ let lines:Vec = if input_type == InputType::Regex { [INFO] [stdout] 62 ~ Vec::new() [INFO] [stdout] 63 | } else { [INFO] [stdout] 64 ~ match read_input_file(cli.input.as_deref().unwrap()) { [INFO] [stdout] 65 | Err(e) => return Err(e), [INFO] [stdout] 66 | Ok(l) => l [INFO] [stdout] 67 ~ } [INFO] [stdout] 68 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/main.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | lines = match read_input_file(cli.input.as_deref().unwrap()) { [INFO] [stdout] | _____________________^ [INFO] [stdout] 65 | | Err(e) => return Err(e), [INFO] [stdout] 66 | | Ok(l) => l [INFO] [stdout] 67 | | }; [INFO] [stdout] | |_____________^ help: try instead: `read_input_file(cli.input.as_deref().unwrap())?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:83:3 [INFO] [stdout] | [INFO] [stdout] 83 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 83 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 83 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:93:3 [INFO] [stdout] | [INFO] [stdout] 93 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 93 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 93 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:103:3 [INFO] [stdout] | [INFO] [stdout] 103 | return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 103 - return Ok(Automata{dfa,nfa,regex}); [INFO] [stdout] 103 + Ok(Automata{dfa,nfa,regex}) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:108:6 [INFO] [stdout] | [INFO] [stdout] 108 | if !self.dfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.dfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:109:7 [INFO] [stdout] | [INFO] [stdout] 109 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:120:3 [INFO] [stdout] | [INFO] [stdout] 120 | return self.dfa.as_ref().unwrap().run(word); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 120 - return self.dfa.as_ref().unwrap().run(word); [INFO] [stdout] 120 + self.dfa.as_ref().unwrap().run(word) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:128:3 [INFO] [stdout] | [INFO] [stdout] 128 | / return match print_to_file(self.dfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 129 | | Ok(()) => { [INFO] [stdout] 130 | | println!("DFA written to {}",address); [INFO] [stdout] 131 | | Ok(()) [INFO] [stdout] 132 | | }, [INFO] [stdout] 133 | | Err(e) => Err(e) [INFO] [stdout] 134 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 ~ match print_to_file(self.dfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 129 ~ Ok(()) => { [INFO] [stdout] 130 ~ println!("DFA written to {}",address); [INFO] [stdout] 131 ~ Ok(()) [INFO] [stdout] 132 ~ }, [INFO] [stdout] 133 ~ Err(e) => Err(e) [INFO] [stdout] 134 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:141:6 [INFO] [stdout] | [INFO] [stdout] 141 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:147:3 [INFO] [stdout] | [INFO] [stdout] 147 | / return match print_to_file(self.nfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 148 | | Ok(()) => { [INFO] [stdout] 149 | | println!("NFA written to {}",address); [INFO] [stdout] 150 | | Ok(()) [INFO] [stdout] 151 | | }, [INFO] [stdout] 152 | | Err(e) => Err(e) [INFO] [stdout] 153 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 147 ~ match print_to_file(self.nfa.as_ref().unwrap().to_string(),address) { [INFO] [stdout] 148 ~ Ok(()) => { [INFO] [stdout] 149 ~ println!("NFA written to {}",address); [INFO] [stdout] 150 ~ Ok(()) [INFO] [stdout] 151 ~ }, [INFO] [stdout] 152 ~ Err(e) => Err(e) [INFO] [stdout] 153 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:160:6 [INFO] [stdout] | [INFO] [stdout] 160 | if !self.regex.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `self.regex.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:161:7 [INFO] [stdout] | [INFO] [stdout] 161 | if !self.nfa.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `self.nfa.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:167:3 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(()); [INFO] [stdout] 167 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `println!` args [INFO] [stdout] --> src/main.rs:166:55 [INFO] [stdout] | [INFO] [stdout] 166 | println!("Regex is: {}",self.regex.as_ref().unwrap().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 199 - }); [INFO] [stdout] 200 - return; [INFO] [stdout] 199 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:238:2 [INFO] [stdout] | [INFO] [stdout] 238 | return Rslt::Nop; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return Rslt::Nop; [INFO] [stdout] 238 + Rslt::Nop [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:244:2 [INFO] [stdout] | [INFO] [stdout] 244 | / return match &cli.input.as_deref() { [INFO] [stdout] 245 | | None => match is_regex { [INFO] [stdout] 246 | | true => Ok(InputType::Regex), [INFO] [stdout] 247 | | false => Err("No automata or regex provided.".to_string()) [INFO] [stdout] ... | [INFO] [stdout] 259 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 ~ match &cli.input.as_deref() { [INFO] [stdout] 245 ~ None => match is_regex { [INFO] [stdout] 246 ~ true => Ok(InputType::Regex), [INFO] [stdout] 247 ~ false => Err("No automata or regex provided.".to_string()) [INFO] [stdout] 248 ~ }, [INFO] [stdout] 249 ~ Some(address) => match is_regex { [INFO] [stdout] 250 ~ true => Err("Cannot input both regex and other automata".to_string()), [INFO] [stdout] 251 ~ false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] 252 ~ "DFA" => Ok(InputType::Dfa), [INFO] [stdout] 253 ~ "NFA" => Ok(InputType::Nfa), [INFO] [stdout] 254 ~ _ => { [INFO] [stdout] 255 ~ return Err("File type is unsupported.".to_string()); [INFO] [stdout] 256 ~ } [INFO] [stdout] 257 ~ } [INFO] [stdout] 258 ~ } [INFO] [stdout] 259 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/main.rs:251:19 [INFO] [stdout] | [INFO] [stdout] 251 | false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 - false => match address.split('.').last().unwrap().to_uppercase().as_str() { [INFO] [stdout] 251 + false => match address.split('.').next_back().unwrap().to_uppercase().as_str() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:271:5 [INFO] [stdout] | [INFO] [stdout] 271 | return Ok(lines); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 271 - return Ok(lines); [INFO] [stdout] 271 + Ok(lines) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:281:5 [INFO] [stdout] | [INFO] [stdout] 281 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 281 - return Ok(()); [INFO] [stdout] 281 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:296:2 [INFO] [stdout] | [INFO] [stdout] 296 | return Ok(result.into_iter().collect()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return Ok(result.into_iter().collect()); [INFO] [stdout] 296 + Ok(result.into_iter().collect()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:311:2 [INFO] [stdout] | [INFO] [stdout] 311 | return alphabet_hashmap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 311 - return alphabet_hashmap; [INFO] [stdout] 311 + alphabet_hashmap [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/main.rs:306:3 [INFO] [stdout] | [INFO] [stdout] 306 | / if !alphabet_hashmap.contains_key(&c) { [INFO] [stdout] 307 | | alphabet_hashmap.insert(c,i); [INFO] [stdout] 308 | | i = Index0(i.0 + 1); [INFO] [stdout] 309 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 306 ~ if let std::collections::hash_map::Entry::Vacant(e) = alphabet_hashmap.entry(c) { [INFO] [stdout] 307 ~ e.insert(i); [INFO] [stdout] 308 ~ i = Index0(i.0 + 1); [INFO] [stdout] 309 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:322:3 [INFO] [stdout] | [INFO] [stdout] 322 | return Self(i1-1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 322 - return Self(i1-1); [INFO] [stdout] 322 + Self(i1-1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:328:3 [INFO] [stdout] | [INFO] [stdout] 328 | return Self(i0+1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 328 - return Self(i0+1); [INFO] [stdout] 328 + Self(i0+1) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:382:2 [INFO] [stdout] | [INFO] [stdout] 382 | return Self(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 382 - return Self(result); [INFO] [stdout] 382 + Self(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:340:5 [INFO] [stdout] | [INFO] [stdout] 340 | if v1.len()==0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v1.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:342:12 [INFO] [stdout] | [INFO] [stdout] 342 | } else if v2.len()==0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v2.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/main.rs:359:25 [INFO] [stdout] | [INFO] [stdout] 359 | } else if j==v2.len() { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 360 | | consider_v1 = true; [INFO] [stdout] 361 | | } else if v1[i]<=v2[j] { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/main.rs:361:26 [INFO] [stdout] | [INFO] [stdout] 361 | } else if v1[i]<=v2[j] { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 362 | | consider_v1 = true; [INFO] [stdout] 363 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression assigns a bool literal [INFO] [stdout] --> src/main.rs:361:10 [INFO] [stdout] | [INFO] [stdout] 361 | } else if v1[i]<=v2[j] { [INFO] [stdout] | ________________^ [INFO] [stdout] 362 | | consider_v1 = true; [INFO] [stdout] 363 | | } else { [INFO] [stdout] 364 | | consider_v1 = false; [INFO] [stdout] 365 | | } [INFO] [stdout] | |_________^ help: you can reduce it to: `{ consider_v1 = v1[i] <= v2[j]; }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool_assign [INFO] [stdout] = note: `#[warn(clippy::needless_bool_assign)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:368:5 [INFO] [stdout] | [INFO] [stdout] 368 | i=i+1 [INFO] [stdout] | ^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:371:5 [INFO] [stdout] | [INFO] [stdout] 371 | i=i+1; [INFO] [stdout] | ^^^^^ help: replace it with: `i += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:375:5 [INFO] [stdout] | [INFO] [stdout] 375 | j=j+1 [INFO] [stdout] | ^^^^^ help: replace it with: `j += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/main.rs:378:5 [INFO] [stdout] | [INFO] [stdout] 378 | j=j+1; [INFO] [stdout] | ^^^^^ help: replace it with: `j += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/main.rs:286:24 [INFO] [stdout] | [INFO] [stdout] 286 | let invalid_letters = vec![':',',']; [INFO] [stdout] | ^^^^^^^^^^^^^ help: you can use an array directly: `[':',',']` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.97s [INFO] running `Command { std: "docker" "inspect" "e34a0103214b717c5f42f178b8503d4dddd6babf435eb229be811445992f98b9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e34a0103214b717c5f42f178b8503d4dddd6babf435eb229be811445992f98b9", kill_on_drop: false }` [INFO] [stdout] e34a0103214b717c5f42f178b8503d4dddd6babf435eb229be811445992f98b9