[INFO] updating cached repository terakun/syntactic_monoid [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/terakun/syntactic_monoid [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/terakun/syntactic_monoid" "work/ex/clippy-test-run/sources/stable/gh/terakun/syntactic_monoid"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/terakun/syntactic_monoid'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/terakun/syntactic_monoid" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/terakun/syntactic_monoid"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/terakun/syntactic_monoid'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 74a94df4aa27f5aa2492693dbd167f596e147fe0 [INFO] sha for GitHub repo terakun/syntactic_monoid: 74a94df4aa27f5aa2492693dbd167f596e147fe0 [INFO] validating manifest of terakun/syntactic_monoid on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of terakun/syntactic_monoid on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing terakun/syntactic_monoid [INFO] finished frobbing terakun/syntactic_monoid [INFO] frobbed toml for terakun/syntactic_monoid written to work/ex/clippy-test-run/sources/stable/gh/terakun/syntactic_monoid/Cargo.toml [INFO] started frobbing terakun/syntactic_monoid [INFO] finished frobbing terakun/syntactic_monoid [INFO] frobbed toml for terakun/syntactic_monoid written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/terakun/syntactic_monoid/Cargo.toml [INFO] crate terakun/syntactic_monoid has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting terakun/syntactic_monoid against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/terakun/syntactic_monoid:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] e8f2f55626f04daf1418033a19eaf5eea7fc21c117aba1711a18a3e7a2a1e588 [INFO] running `"docker" "start" "-a" "e8f2f55626f04daf1418033a19eaf5eea7fc21c117aba1711a18a3e7a2a1e588"` [INFO] [stderr] Checking bit-vec v0.4.4 [INFO] [stderr] Checking bit-set v0.4.0 [INFO] [stderr] Checking syntactic_monoid v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nfa.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nfa.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | accept: accept, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `accept` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/nfa.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/dfa.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/dfa.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | accept: accept, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `accept` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/dfa.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/dfa.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/syntactic_monoid.rs:29:18 [INFO] [stderr] | [INFO] [stderr] 29 | Matrix { mat: mat, n: size } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/syntactic_monoid.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | mat: mat, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nfa.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nfa.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | accept: accept, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `accept` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/nfa.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/dfa.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/dfa.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | accept: accept, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `accept` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/dfa.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/dfa.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/syntactic_monoid.rs:29:18 [INFO] [stderr] | [INFO] [stderr] 29 | Matrix { mat: mat, n: size } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/syntactic_monoid.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | mat: mat, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mat` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `regex::RegularExpression` [INFO] [stderr] --> src/syntactic_monoid.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use regex::RegularExpression; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `regex::RegularExpression` [INFO] [stderr] --> src/syntactic_monoid.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use regex::RegularExpression; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Empty` [INFO] [stderr] --> src/regex.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | Empty, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Epsilon` [INFO] [stderr] --> src/regex.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | Epsilon, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_trans` [INFO] [stderr] --> src/nfa.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn print_trans(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_graphviz` [INFO] [stderr] --> src/nfa.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | pub fn to_graphviz(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_trans` [INFO] [stderr] --> src/dfa.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_trans` [INFO] [stderr] --> src/dfa.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn add_trans(&mut self, id: i32, ch: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_trans` [INFO] [stderr] --> src/dfa.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn print_trans(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_subset` [INFO] [stderr] --> src/dfa.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn print_subset(subset: &SubSet) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `accept` [INFO] [stderr] --> src/dfa.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn accept(&self, input: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `alphabets` [INFO] [stderr] --> src/syntactic_monoid.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | alphabets: BitSet, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/regex.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn parse(&mut self, text: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:98:21 [INFO] [stderr] | [INFO] [stderr] 98 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:111:17 [INFO] [stderr] | [INFO] [stderr] 111 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/regex.rs:112:27 [INFO] [stderr] | [INFO] [stderr] 112 | let exp = match &self.read_union() { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 113 | | &Some(ref exp) => exp.clone(), [INFO] [stderr] 114 | | &None => { [INFO] [stderr] 115 | | return None; [INFO] [stderr] 116 | | } [INFO] [stderr] 117 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 112 | let exp = match self.read_union() { [INFO] [stderr] 113 | Some(ref exp) => exp.clone(), [INFO] [stderr] 114 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:122:17 [INFO] [stderr] | [INFO] [stderr] 122 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Empty` [INFO] [stderr] --> src/regex.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | Empty, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dfa.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &Vec) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &[i32]) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `transition.clone()` to [INFO] [stderr] | [INFO] [stderr] 24 | self.t = transition.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/dfa.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Epsilon` [INFO] [stderr] --> src/regex.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | Epsilon, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_trans` [INFO] [stderr] --> src/nfa.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn print_trans(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_graphviz` [INFO] [stderr] --> src/nfa.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | pub fn to_graphviz(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_trans` [INFO] [stderr] --> src/dfa.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_trans` [INFO] [stderr] --> src/dfa.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn add_trans(&mut self, id: i32, ch: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_trans` [INFO] [stderr] --> src/dfa.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn print_trans(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_subset` [INFO] [stderr] --> src/dfa.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn print_subset(subset: &SubSet) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `accept` [INFO] [stderr] --> src/dfa.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn accept(&self, input: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `alphabets` [INFO] [stderr] --> src/syntactic_monoid.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | alphabets: BitSet, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/regex.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn parse(&mut self, text: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/dfa.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | dfa_state.t[ch as usize] = *nfa2dfa_id.get(&trans_subset).unwrap() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nfa2dfa_id[&trans_subset]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:98:21 [INFO] [stderr] | [INFO] [stderr] 98 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:111:17 [INFO] [stderr] | [INFO] [stderr] 111 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/regex.rs:112:27 [INFO] [stderr] | [INFO] [stderr] 112 | let exp = match &self.read_union() { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 113 | | &Some(ref exp) => exp.clone(), [INFO] [stderr] 114 | | &None => { [INFO] [stderr] 115 | | return None; [INFO] [stderr] 116 | | } [INFO] [stderr] 117 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 112 | let exp = match self.read_union() { [INFO] [stderr] 113 | Some(ref exp) => exp.clone(), [INFO] [stderr] 114 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:122:17 [INFO] [stderr] | [INFO] [stderr] 122 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/regex.rs:128:17 [INFO] [stderr] | [INFO] [stderr] 128 | self.cur = self.cur + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cur += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dfa.rs:227:33 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn accept(&self, input: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `mat` [INFO] [stderr] --> src/syntactic_monoid.rs:26:18 [INFO] [stderr] | [INFO] [stderr] 26 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 26 | for (i, ) in mat.iter_mut().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `mat` [INFO] [stderr] --> src/syntactic_monoid.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | for i in 0..self.n { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 49 | for (i, ) in mat.iter_mut().enumerate().take(self.n) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/syntactic_monoid.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | mat[i][j] = mat[i][j] + self.mat[i][k] * m.mat[k][j]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `mat[i][j] += self.mat[i][k] * m.mat[k][j]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/syntactic_monoid.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn identity(e: &ElemType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ElemType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:110:10 [INFO] [stderr] | [INFO] [stderr] 110 | *self.transitions_map.get(&mat).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mat]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/syntactic_monoid.rs:158:29 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn accept(&self, e: &ElemType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ElemType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/syntactic_monoid.rs:162:51 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn construct(&mut self, dfa: &DFA, input: &String) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 162 | pub fn construct(&mut self, dfa: &DFA, input: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `input.clone()` to [INFO] [stderr] | [INFO] [stderr] 164 | self.input = input.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:188:43 [INFO] [stderr] | [INFO] [stderr] 188 | .insert(c as u8, *self.transitions_map.get(&next).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&next]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:215:22 [INFO] [stderr] | [INFO] [stderr] 215 | *self.transitions_map.get(&mult_matij).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mult_matij]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:218:22 [INFO] [stderr] | [INFO] [stderr] 218 | *self.transitions_map.get(&mult_matji).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mult_matji]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/syntactic_monoid.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn starfree_recursion(&self, m: ElemType, memo: &mut HashMap) -> String { [INFO] [stderr] 238 | | if let Some(ref s) = memo.get(&m) { [INFO] [stderr] 239 | | return s.to_string(); [INFO] [stderr] 240 | | } [INFO] [stderr] ... | [INFO] [stderr] 391 | | regex [INFO] [stderr] 392 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dfa.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &Vec) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 23 | pub fn set_trans(&mut self, transition: &[i32]) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `transition.clone()` to [INFO] [stderr] | [INFO] [stderr] 24 | self.t = transition.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/dfa.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/dfa.rs:126:45 [INFO] [stderr] | [INFO] [stderr] 126 | dfa_state.t[ch as usize] = *nfa2dfa_id.get(&trans_subset).unwrap() as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nfa2dfa_id[&trans_subset]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/dfa.rs:227:33 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn accept(&self, input: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `mat` [INFO] [stderr] --> src/syntactic_monoid.rs:26:18 [INFO] [stderr] | [INFO] [stderr] 26 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 26 | for (i, ) in mat.iter_mut().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `mat` [INFO] [stderr] --> src/syntactic_monoid.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | for i in 0..self.n { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 49 | for (i, ) in mat.iter_mut().enumerate().take(self.n) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/syntactic_monoid.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | mat[i][j] = mat[i][j] + self.mat[i][k] * m.mat[k][j]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `mat[i][j] += self.mat[i][k] * m.mat[k][j]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/syntactic_monoid.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn identity(e: &ElemType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ElemType` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:110:10 [INFO] [stderr] | [INFO] [stderr] 110 | *self.transitions_map.get(&mat).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mat]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/syntactic_monoid.rs:158:29 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn accept(&self, e: &ElemType) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ElemType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/syntactic_monoid.rs:162:51 [INFO] [stderr] | [INFO] [stderr] 162 | pub fn construct(&mut self, dfa: &DFA, input: &String) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 162 | pub fn construct(&mut self, dfa: &DFA, input: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `input.clone()` to [INFO] [stderr] | [INFO] [stderr] 164 | self.input = input.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:188:43 [INFO] [stderr] | [INFO] [stderr] 188 | .insert(c as u8, *self.transitions_map.get(&next).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&next]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:215:22 [INFO] [stderr] | [INFO] [stderr] 215 | *self.transitions_map.get(&mult_matij).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mult_matij]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/syntactic_monoid.rs:218:22 [INFO] [stderr] | [INFO] [stderr] 218 | *self.transitions_map.get(&mult_matji).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.transitions_map[&mult_matji]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/syntactic_monoid.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn starfree_recursion(&self, m: ElemType, memo: &mut HashMap) -> String { [INFO] [stderr] 238 | | if let Some(ref s) = memo.get(&m) { [INFO] [stderr] 239 | | return s.to_string(); [INFO] [stderr] 240 | | } [INFO] [stderr] ... | [INFO] [stderr] 391 | | regex [INFO] [stderr] 392 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.88s [INFO] running `"docker" "inspect" "e8f2f55626f04daf1418033a19eaf5eea7fc21c117aba1711a18a3e7a2a1e588"` [INFO] running `"docker" "rm" "-f" "e8f2f55626f04daf1418033a19eaf5eea7fc21c117aba1711a18a3e7a2a1e588"` [INFO] [stdout] e8f2f55626f04daf1418033a19eaf5eea7fc21c117aba1711a18a3e7a2a1e588