[INFO] updating cached repository sbwtw/regex-gen [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/sbwtw/regex-gen [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/sbwtw/regex-gen" "work/ex/clippy-test-run/sources/stable/gh/sbwtw/regex-gen"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/sbwtw/regex-gen'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/sbwtw/regex-gen" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sbwtw/regex-gen"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sbwtw/regex-gen'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] a703acd1984705229cb1706a2ebcaaa37ed9bf1e [INFO] sha for GitHub repo sbwtw/regex-gen: a703acd1984705229cb1706a2ebcaaa37ed9bf1e [INFO] validating manifest of sbwtw/regex-gen 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 sbwtw/regex-gen 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 sbwtw/regex-gen [INFO] finished frobbing sbwtw/regex-gen [INFO] frobbed toml for sbwtw/regex-gen written to work/ex/clippy-test-run/sources/stable/gh/sbwtw/regex-gen/Cargo.toml [INFO] started frobbing sbwtw/regex-gen [INFO] finished frobbing sbwtw/regex-gen [INFO] frobbed toml for sbwtw/regex-gen written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/sbwtw/regex-gen/Cargo.toml [INFO] crate sbwtw/regex-gen 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 sbwtw/regex-gen 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/sbwtw/regex-gen:/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] 18df4a9b9e87542fdf515d75dd65a11cb069930141cc136038a0165c13ee95d9 [INFO] running `"docker" "start" "-a" "18df4a9b9e87542fdf515d75dd65a11cb069930141cc136038a0165c13ee95d9"` [INFO] [stderr] Checking regex-gen v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/node.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | matches: matches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `matches` [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/node.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | matches: matches, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `matches` [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: unneeded return statement [INFO] [stderr] --> src/regex_gen.rs:335:18 [INFO] [stderr] | [INFO] [stderr] 335 | _ => return Err(()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/regex_gen.rs:355:18 [INFO] [stderr] | [INFO] [stderr] 355 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Closure called just once immediately after it was declared [INFO] [stderr] --> src/transtable.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | self.start = pos(&self.start); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/regex_gen.rs:335:18 [INFO] [stderr] | [INFO] [stderr] 335 | _ => return Err(()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/regex_gen.rs:355:18 [INFO] [stderr] | [INFO] [stderr] 355 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Closure called just once immediately after it was declared [INFO] [stderr] --> src/transtable.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | self.start = pos(&self.start); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/regex_gen.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | / match self { [INFO] [stderr] 124 | | &RegexUnit::Character(c) => { [INFO] [stderr] 125 | | let mut graph = NFAGraph::new(); [INFO] [stderr] 126 | | { [INFO] [stderr] ... | [INFO] [stderr] 248 | | } [INFO] [stderr] 249 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 123 | match *self { [INFO] [stderr] 124 | RegexUnit::Character(c) => { [INFO] [stderr] 125 | let mut graph = NFAGraph::new(); [INFO] [stderr] 126 | { [INFO] [stderr] 127 | let end_id = graph.end_id(); [INFO] [stderr] 128 | let (start, _) = graph.nodes_mut(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/regex_gen.rs:206:25 [INFO] [stderr] | [INFO] [stderr] 206 | assert!(list.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:304:26 [INFO] [stderr] | [INFO] [stderr] 304 | if let Some(c) = self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:304:52 [INFO] [stderr] | [INFO] [stderr] 304 | if let Some(c) = self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:317:15 [INFO] [stderr] | [INFO] [stderr] 317 | match self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:317:41 [INFO] [stderr] | [INFO] [stderr] 317 | match self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:379:19 [INFO] [stderr] | [INFO] [stderr] 379 | match self.input.next().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.next().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:379:45 [INFO] [stderr] | [INFO] [stderr] 379 | match self.input.next().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `node::NFAGraph` [INFO] [stderr] --> src/node.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new() -> NFAGraph { [INFO] [stderr] 17 | | NFAGraph { [INFO] [stderr] 18 | | start: Node::new(), [INFO] [stderr] 19 | | end: Node::new(), [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | impl Default for node::NFAGraph { [INFO] [stderr] 16 | fn default() -> Self { [INFO] [stderr] 17 | Self::new() [INFO] [stderr] 18 | } [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/node.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &EdgeMatches::Character(ch) => c == ch, [INFO] [stderr] 97 | | &EdgeMatches::CharacterRange(s, e) => c >= s && c <= e, [INFO] [stderr] 98 | | &EdgeMatches::Not(ref list) => !list.iter().any(|x| x.match_character(c)), [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 95 | match *self { [INFO] [stderr] 96 | EdgeMatches::Character(ch) => c == ch, [INFO] [stderr] 97 | EdgeMatches::CharacterRange(s, e) => c >= s && c <= e, [INFO] [stderr] 98 | EdgeMatches::Not(ref list) => !list.iter().any(|x| x.match_character(c)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:24 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:33 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:42 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:51 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:124:15 [INFO] [stderr] | [INFO] [stderr] 124 | fn display(c: &u8) -> String { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: useless use of `format!` [INFO] [stderr] --> src/node.rs:134:42 [INFO] [stderr] | [INFO] [stderr] 134 | EdgeMatches::Character(c) => format!("{}", display(c)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `display(c).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: you are iterating over `Iterator::next()` which is an Option; this will compile but is probably not what you want [INFO] [stderr] --> src/node.rs:144:29 [INFO] [stderr] | [INFO] [stderr] 144 | for item in iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::iter_next_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_next_loop [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `node::Node` [INFO] [stderr] --> src/node.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | / pub fn new() -> Node { [INFO] [stderr] 204 | | Node { [INFO] [stderr] 205 | | id: ID_SEQ.fetch_add(1, Ordering::SeqCst), [INFO] [stderr] 206 | | edges: vec![], [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:107:22 [INFO] [stderr] | [INFO] [stderr] 107 | for e in self.trans.get(&state).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.trans[&state]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:138:39 [INFO] [stderr] | [INFO] [stderr] 138 | let mut states: Vec = self.states.iter().map(|x| x.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.states.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:146:37 [INFO] [stderr] | [INFO] [stderr] 146 | let pos = move |x: &States| m.get(&*x).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&m[&*x]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/transtable.rs:167:41 [INFO] [stderr] | [INFO] [stderr] 167 | self.trans.entry(state.clone()).or_insert(vec![]).append(edges); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / Iterator::flatten( [INFO] [stderr] 172 | | self.epsilon_move(state) [INFO] [stderr] 173 | | .iter() [INFO] [stderr] 174 | | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] 175 | | ) [INFO] [stderr] 176 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 171 | Iterator::flatten( [INFO] [stderr] 172 | self.epsilon_move(state) [INFO] [stderr] 173 | .iter() [INFO] [stderr] 174 | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] 175 | ).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:174:26 [INFO] [stderr] | [INFO] [stderr] 174 | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.trans[&x]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | / r.iter() [INFO] [stderr] 186 | | .filter(|&x| x != state && (self.end.contains(x) || self.has_nontrivial_edge(x))) [INFO] [stderr] 187 | | .map(|x| x.clone()) [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 185 | r.iter() [INFO] [stderr] 186 | .filter(|&x| x != state && (self.end.contains(x) || self.has_nontrivial_edge(x))).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | for e in self [INFO] [stderr] | __________________^ [INFO] [stderr] 198 | | .trans [INFO] [stderr] 199 | | .get(state) [INFO] [stderr] 200 | | .unwrap() [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | for e in &self [INFO] [stderr] 198 | .trans[state] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | / self.trans [INFO] [stderr] 210 | | .get(state) [INFO] [stderr] 211 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&self.trans[state]` [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/transtable.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / self.trans [INFO] [stderr] 218 | | .get(state) [INFO] [stderr] 219 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&self.trans[state]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:230:26 [INFO] [stderr] | [INFO] [stderr] 230 | let mut states = self.states.iter().map(|x| x.clone()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.states.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transtable.rs:248:30 [INFO] [stderr] | [INFO] [stderr] 248 | .unwrap_or("\u{03b5}".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "\u{03b5}".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/execute_engine.rs:20:17 [INFO] [stderr] | [INFO] [stderr] 20 | let ref trans = self.transtable.trans_map().get(state).unwrap(); [INFO] [stderr] | ----^^^^^^^^^--------------------------------------------------- help: try: `let trans = &self.transtable.trans_map().get(state).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `regex-gen`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/regex_gen.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | / match self { [INFO] [stderr] 124 | | &RegexUnit::Character(c) => { [INFO] [stderr] 125 | | let mut graph = NFAGraph::new(); [INFO] [stderr] 126 | | { [INFO] [stderr] ... | [INFO] [stderr] 248 | | } [INFO] [stderr] 249 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 123 | match *self { [INFO] [stderr] 124 | RegexUnit::Character(c) => { [INFO] [stderr] 125 | let mut graph = NFAGraph::new(); [INFO] [stderr] 126 | { [INFO] [stderr] 127 | let end_id = graph.end_id(); [INFO] [stderr] 128 | let (start, _) = graph.nodes_mut(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/regex_gen.rs:206:25 [INFO] [stderr] | [INFO] [stderr] 206 | assert!(list.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:304:26 [INFO] [stderr] | [INFO] [stderr] 304 | if let Some(c) = self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:304:52 [INFO] [stderr] | [INFO] [stderr] 304 | if let Some(c) = self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:317:15 [INFO] [stderr] | [INFO] [stderr] 317 | match self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.peek().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:317:41 [INFO] [stderr] | [INFO] [stderr] 317 | match self.input.peek().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/regex_gen.rs:379:19 [INFO] [stderr] | [INFO] [stderr] 379 | match self.input.next().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.input.next().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/regex_gen.rs:379:45 [INFO] [stderr] | [INFO] [stderr] 379 | match self.input.next().map(|x| x.clone()) { [INFO] [stderr] | ^^^^^^^^^ help: try removing the `clone` call: `x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `node::NFAGraph` [INFO] [stderr] --> src/node.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn new() -> NFAGraph { [INFO] [stderr] 17 | | NFAGraph { [INFO] [stderr] 18 | | start: Node::new(), [INFO] [stderr] 19 | | end: Node::new(), [INFO] [stderr] ... | [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 15 | impl Default for node::NFAGraph { [INFO] [stderr] 16 | fn default() -> Self { [INFO] [stderr] 17 | Self::new() [INFO] [stderr] 18 | } [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/node.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &EdgeMatches::Character(ch) => c == ch, [INFO] [stderr] 97 | | &EdgeMatches::CharacterRange(s, e) => c >= s && c <= e, [INFO] [stderr] 98 | | &EdgeMatches::Not(ref list) => !list.iter().any(|x| x.match_character(c)), [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 95 | match *self { [INFO] [stderr] 96 | EdgeMatches::Character(ch) => c == ch, [INFO] [stderr] 97 | EdgeMatches::CharacterRange(s, e) => c >= s && c <= e, [INFO] [stderr] 98 | EdgeMatches::Not(ref list) => !list.iter().any(|x| x.match_character(c)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:24 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:33 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:42 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:116:51 [INFO] [stderr] | [INFO] [stderr] 116 | fn range_intersect(ls: &u8, le: &u8, rs: &u8, re: &u8) -> bool { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/node.rs:124:15 [INFO] [stderr] | [INFO] [stderr] 124 | fn display(c: &u8) -> String { [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [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: useless use of `format!` [INFO] [stderr] --> src/node.rs:134:42 [INFO] [stderr] | [INFO] [stderr] 134 | EdgeMatches::Character(c) => format!("{}", display(c)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `display(c).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: you are iterating over `Iterator::next()` which is an Option; this will compile but is probably not what you want [INFO] [stderr] --> src/node.rs:144:29 [INFO] [stderr] | [INFO] [stderr] 144 | for item in iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::iter_next_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_next_loop [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `node::Node` [INFO] [stderr] --> src/node.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | / pub fn new() -> Node { [INFO] [stderr] 204 | | Node { [INFO] [stderr] 205 | | id: ID_SEQ.fetch_add(1, Ordering::SeqCst), [INFO] [stderr] 206 | | edges: vec![], [INFO] [stderr] 207 | | } [INFO] [stderr] 208 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:107:22 [INFO] [stderr] | [INFO] [stderr] 107 | for e in self.trans.get(&state).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.trans[&state]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:138:39 [INFO] [stderr] | [INFO] [stderr] 138 | let mut states: Vec = self.states.iter().map(|x| x.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.states.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:146:37 [INFO] [stderr] | [INFO] [stderr] 146 | let pos = move |x: &States| m.get(&*x).unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try this: `&m[&*x]` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/transtable.rs:167:41 [INFO] [stderr] | [INFO] [stderr] 167 | self.trans.entry(state.clone()).or_insert(vec![]).append(edges); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / Iterator::flatten( [INFO] [stderr] 172 | | self.epsilon_move(state) [INFO] [stderr] 173 | | .iter() [INFO] [stderr] 174 | | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] 175 | | ) [INFO] [stderr] 176 | | .map(|x| x.clone()) [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 171 | Iterator::flatten( [INFO] [stderr] 172 | self.epsilon_move(state) [INFO] [stderr] 173 | .iter() [INFO] [stderr] 174 | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] 175 | ).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:174:26 [INFO] [stderr] | [INFO] [stderr] 174 | .map(|x| self.trans.get(&x).unwrap()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.trans[&x]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | / r.iter() [INFO] [stderr] 186 | | .filter(|&x| x != state && (self.end.contains(x) || self.has_nontrivial_edge(x))) [INFO] [stderr] 187 | | .map(|x| x.clone()) [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 185 | r.iter() [INFO] [stderr] 186 | .filter(|&x| x != state && (self.end.contains(x) || self.has_nontrivial_edge(x))).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:197:18 [INFO] [stderr] | [INFO] [stderr] 197 | for e in self [INFO] [stderr] | __________________^ [INFO] [stderr] 198 | | .trans [INFO] [stderr] 199 | | .get(state) [INFO] [stderr] 200 | | .unwrap() [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 197 | for e in &self [INFO] [stderr] 198 | .trans[state] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/transtable.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | / self.trans [INFO] [stderr] 210 | | .get(state) [INFO] [stderr] 211 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&self.trans[state]` [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/transtable.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / self.trans [INFO] [stderr] 218 | | .get(state) [INFO] [stderr] 219 | | .unwrap() [INFO] [stderr] | |_____________________^ help: try this: `&self.trans[state]` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/transtable.rs:230:26 [INFO] [stderr] | [INFO] [stderr] 230 | let mut states = self.states.iter().map(|x| x.clone()).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.states.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/transtable.rs:248:30 [INFO] [stderr] | [INFO] [stderr] 248 | .unwrap_or("\u{03b5}".to_string()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "\u{03b5}".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/execute_engine.rs:20:17 [INFO] [stderr] | [INFO] [stderr] 20 | let ref trans = self.transtable.trans_map().get(state).unwrap(); [INFO] [stderr] | ----^^^^^^^^^--------------------------------------------------- help: try: `let trans = &self.transtable.trans_map().get(state).unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `regex-gen`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "18df4a9b9e87542fdf515d75dd65a11cb069930141cc136038a0165c13ee95d9"` [INFO] running `"docker" "rm" "-f" "18df4a9b9e87542fdf515d75dd65a11cb069930141cc136038a0165c13ee95d9"` [INFO] [stdout] 18df4a9b9e87542fdf515d75dd65a11cb069930141cc136038a0165c13ee95d9