[INFO] crate generic_regex 0.1.0 is already in cache [INFO] extracting crate generic_regex 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/generic_regex/0.1.0 [INFO] extracting crate generic_regex 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/generic_regex/0.1.0 [INFO] validating manifest of generic_regex-0.1.0 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 generic_regex-0.1.0 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 generic_regex-0.1.0 [INFO] finished frobbing generic_regex-0.1.0 [INFO] frobbed toml for generic_regex-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/generic_regex/0.1.0/Cargo.toml [INFO] started frobbing generic_regex-0.1.0 [INFO] finished frobbing generic_regex-0.1.0 [INFO] frobbed toml for generic_regex-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/generic_regex/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 generic_regex-0.1.0 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-2/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/reg/generic_regex/0.1.0:/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] 4c06d56b4421990a5184fa52f363b7d571c01416c485b30642b802b314d9edef [INFO] running `"docker" "start" "-a" "4c06d56b4421990a5184fa52f363b7d571c01416c485b30642b802b314d9edef"` [INFO] [stderr] Checking generic_regex v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:930:9 [INFO] [stderr] | [INFO] [stderr] 930 | { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 931 | | if self.flushing>0 [INFO] [stderr] 932 | | { [INFO] [stderr] 933 | | self.insert=Some(ins); [INFO] [stderr] ... | [INFO] [stderr] 940 | | } [INFO] [stderr] 941 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 930 | if self.flushing>0 [INFO] [stderr] 931 | { [INFO] [stderr] 932 | self.insert=Some(ins); [INFO] [stderr] 933 | self.flushing-=1; [INFO] [stderr] 934 | return self.source_flush.next(); [INFO] [stderr] 935 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:1098:7 [INFO] [stderr] | [INFO] [stderr] 1098 | { [INFO] [stderr] | _________________________^ [INFO] [stderr] 1099 | | if self.flushing>0 [INFO] [stderr] 1100 | | { [INFO] [stderr] 1101 | | self.insert=Some(ins); [INFO] [stderr] ... | [INFO] [stderr] 1111 | | } [INFO] [stderr] 1112 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1098 | if self.flushing>0 [INFO] [stderr] 1099 | { [INFO] [stderr] 1100 | self.insert=Some(ins); [INFO] [stderr] 1101 | self.flushing-=1; [INFO] [stderr] 1102 | //return self.source_flush.next(); [INFO] [stderr] 1103 | self.source_flush+=1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:930:9 [INFO] [stderr] | [INFO] [stderr] 930 | { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 931 | | if self.flushing>0 [INFO] [stderr] 932 | | { [INFO] [stderr] 933 | | self.insert=Some(ins); [INFO] [stderr] ... | [INFO] [stderr] 940 | | } [INFO] [stderr] 941 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 930 | if self.flushing>0 [INFO] [stderr] 931 | { [INFO] [stderr] 932 | self.insert=Some(ins); [INFO] [stderr] 933 | self.flushing-=1; [INFO] [stderr] 934 | return self.source_flush.next(); [INFO] [stderr] 935 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:1098:7 [INFO] [stderr] | [INFO] [stderr] 1098 | { [INFO] [stderr] | _________________________^ [INFO] [stderr] 1099 | | if self.flushing>0 [INFO] [stderr] 1100 | | { [INFO] [stderr] 1101 | | self.insert=Some(ins); [INFO] [stderr] ... | [INFO] [stderr] 1111 | | } [INFO] [stderr] 1112 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1098 | if self.flushing>0 [INFO] [stderr] 1099 | { [INFO] [stderr] 1100 | self.insert=Some(ins); [INFO] [stderr] 1101 | self.flushing-=1; [INFO] [stderr] 1102 | //return self.source_flush.next(); [INFO] [stderr] 1103 | self.source_flush+=1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:28:3 [INFO] [stderr] | [INFO] [stderr] 28 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | &EmptySet => match other [INFO] [stderr] 31 | | { [INFO] [stderr] ... | [INFO] [stderr] 84 | | }, [INFO] [stderr] 85 | | } [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] 28 | match *self [INFO] [stderr] 29 | { [INFO] [stderr] 30 | EmptySet => match other [INFO] [stderr] 31 | { [INFO] [stderr] 32 | &EmptySet => Ordering::Equal, [INFO] [stderr] 33 | _ => Ordering::Less, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | &EmptySet => match other [INFO] [stderr] | __________________________^ [INFO] [stderr] 31 | | { [INFO] [stderr] 32 | | &EmptySet => Ordering::Equal, [INFO] [stderr] 33 | | _ => Ordering::Less, [INFO] [stderr] 34 | | } [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] 30 | &EmptySet => match *other [INFO] [stderr] 31 | { [INFO] [stderr] 32 | EmptySet => Ordering::Equal, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:35:20 [INFO] [stderr] | [INFO] [stderr] 35 | &EmptyString => match other [INFO] [stderr] | _____________________________^ [INFO] [stderr] 36 | | { [INFO] [stderr] 37 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 38 | | &EmptyString => Ordering::Equal, [INFO] [stderr] 39 | | _ => Ordering::Less, [INFO] [stderr] 40 | | }, [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] 35 | &EmptyString => match *other [INFO] [stderr] 36 | { [INFO] [stderr] 37 | EmptySet => Ordering::Greater, [INFO] [stderr] 38 | EmptyString => Ordering::Equal, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:41:24 [INFO] [stderr] | [INFO] [stderr] 41 | &Single(ref lit) => match other [INFO] [stderr] | _________________________________^ [INFO] [stderr] 42 | | { [INFO] [stderr] 43 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 44 | | &EmptyString => Ordering::Greater, [INFO] [stderr] 45 | | &Single(ref lit_other) => lit.cmp(lit_other), [INFO] [stderr] 46 | | _ => Ordering::Less, [INFO] [stderr] 47 | | }, [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] 41 | &Single(ref lit) => match *other [INFO] [stderr] 42 | { [INFO] [stderr] 43 | EmptySet => Ordering::Greater, [INFO] [stderr] 44 | EmptyString => Ordering::Greater, [INFO] [stderr] 45 | Single(ref lit_other) => lit.cmp(lit_other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:48:27 [INFO] [stderr] | [INFO] [stderr] 48 | &Disjunction(ref v) => match other [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 49 | | { [INFO] [stderr] 50 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 51 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 54 | | _ => Ordering::Less, [INFO] [stderr] 55 | | }, [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] 48 | &Disjunction(ref v) => match *other [INFO] [stderr] 49 | { [INFO] [stderr] 50 | EmptySet => Ordering::Greater, [INFO] [stderr] 51 | EmptyString => Ordering::Greater, [INFO] [stderr] 52 | Single(_) => Ordering::Greater, [INFO] [stderr] 53 | Disjunction(ref v_other) => v.cmp(v_other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | &Concatenation(ref v) => match other [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 57 | | { [INFO] [stderr] 58 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 59 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 63 | | _ => Ordering::Less, [INFO] [stderr] 64 | | }, [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] 56 | &Concatenation(ref v) => match *other [INFO] [stderr] 57 | { [INFO] [stderr] 58 | EmptySet => Ordering::Greater, [INFO] [stderr] 59 | EmptyString => Ordering::Greater, [INFO] [stderr] 60 | Single(_) => Ordering::Greater, [INFO] [stderr] 61 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | &KleeneStar(ref e) => match other [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | { [INFO] [stderr] 67 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 68 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 73 | | _ => Ordering::Less, [INFO] [stderr] 74 | | }, [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] 65 | &KleeneStar(ref e) => match *other [INFO] [stderr] 66 | { [INFO] [stderr] 67 | EmptySet => Ordering::Greater, [INFO] [stderr] 68 | EmptyString => Ordering::Greater, [INFO] [stderr] 69 | Single(_) => Ordering::Greater, [INFO] [stderr] 70 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | &Complement(ref e) => match other [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 76 | | { [INFO] [stderr] 77 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 78 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 83 | | &Complement(ref e_other) => e.cmp(e_other), [INFO] [stderr] 84 | | }, [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] 75 | &Complement(ref e) => match *other [INFO] [stderr] 76 | { [INFO] [stderr] 77 | EmptySet => Ordering::Greater, [INFO] [stderr] 78 | EmptyString => Ordering::Greater, [INFO] [stderr] 79 | Single(_) => Ordering::Greater, [INFO] [stderr] 80 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:115:3 [INFO] [stderr] | [INFO] [stderr] 115 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 116 | | { [INFO] [stderr] 117 | | &EmptySet => EmptySet, [INFO] [stderr] 118 | | &EmptyString => EmptyString, [INFO] [stderr] ... | [INFO] [stderr] 178 | | &Complement(ref v) => Complement(v.clone()), [INFO] [stderr] 179 | | } [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] 115 | match *self [INFO] [stderr] 116 | { [INFO] [stderr] 117 | EmptySet => EmptySet, [INFO] [stderr] 118 | EmptyString => EmptyString, [INFO] [stderr] 119 | Single(ref lit) => Single(lit.clone()), [INFO] [stderr] 120 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:184:3 [INFO] [stderr] | [INFO] [stderr] 184 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 185 | | { [INFO] [stderr] 186 | | &EmptySet => String::from("@emptyset"), [INFO] [stderr] 187 | | &EmptyString => String::from(""), [INFO] [stderr] ... | [INFO] [stderr] 209 | | &Complement(ref v) => String::from("[^")+&v.iter().map(t_to_string).collect::()+&String::from("]"), [INFO] [stderr] 210 | | } [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] 184 | match *self [INFO] [stderr] 185 | { [INFO] [stderr] 186 | EmptySet => String::from("@emptyset"), [INFO] [stderr] 187 | EmptyString => String::from(""), [INFO] [stderr] 188 | Single(ref lit) => t_to_string(&lit), [INFO] [stderr] 189 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:214:3 [INFO] [stderr] | [INFO] [stderr] 214 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 215 | | { [INFO] [stderr] 216 | | &EmptySet => false, [INFO] [stderr] 217 | | &EmptyString => true, [INFO] [stderr] ... | [INFO] [stderr] 242 | | &Complement(_) => false, [INFO] [stderr] 243 | | } [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] 214 | match *self [INFO] [stderr] 215 | { [INFO] [stderr] 216 | EmptySet => false, [INFO] [stderr] 217 | EmptyString => true, [INFO] [stderr] 218 | Single(_) => false, [INFO] [stderr] 219 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:247:3 [INFO] [stderr] | [INFO] [stderr] 247 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 248 | | { [INFO] [stderr] 249 | | &EmptySet => EmptySet, [INFO] [stderr] 250 | | &EmptyString => EmptySet, [INFO] [stderr] ... | [INFO] [stderr] 292 | | }, [INFO] [stderr] 293 | | } [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] 247 | match *self [INFO] [stderr] 248 | { [INFO] [stderr] 249 | EmptySet => EmptySet, [INFO] [stderr] 250 | EmptyString => EmptySet, [INFO] [stderr] 251 | Single(ref lit) => if *lit==*argument { EmptyString } else { EmptySet }, [INFO] [stderr] 252 | Disjunction(ref v) => Disjunction(v.iter().map(|x|Rc::new(x.simple_derivative(argument))).collect()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:268:11 [INFO] [stderr] | [INFO] [stderr] 268 | while w.len()>0 [INFO] [stderr] | ^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!w.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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:301:3 [INFO] [stderr] | [INFO] [stderr] 301 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 302 | | { [INFO] [stderr] 303 | | &EmptySet => EmptySet, [INFO] [stderr] 304 | | &EmptyString => EmptyString, [INFO] [stderr] ... | [INFO] [stderr] 309 | | &Complement(ref v) => Complement(v.iter().map(f).collect()), [INFO] [stderr] 310 | | } [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] 301 | match *self [INFO] [stderr] 302 | { [INFO] [stderr] 303 | EmptySet => EmptySet, [INFO] [stderr] 304 | EmptyString => EmptyString, [INFO] [stderr] 305 | Single(ref lit) => Single(f(lit)), [INFO] [stderr] 306 | Disjunction(ref v) => Disjunction(v.iter().map(|x|Rc::new(x.map(f))).collect()), [INFO] [stderr] ... [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/lib.rs:312:23 [INFO] [stderr] | [INFO] [stderr] 312 | fn firsts(&self, all:&Vec) -> BTreeSet [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:315:3 [INFO] [stderr] | [INFO] [stderr] 315 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 316 | | { [INFO] [stderr] 317 | | &EmptySet => (), [INFO] [stderr] 318 | | &EmptyString => (), [INFO] [stderr] ... | [INFO] [stderr] 357 | | }, [INFO] [stderr] 358 | | }; [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] 315 | match *self [INFO] [stderr] 316 | { [INFO] [stderr] 317 | EmptySet => (), [INFO] [stderr] 318 | EmptyString => (), [INFO] [stderr] 319 | Single(ref lit) => [INFO] [stderr] 320 | { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:456:32 [INFO] [stderr] | [INFO] [stderr] 456 | stack.iter().filter(|&x|match x [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 457 | | { [INFO] [stderr] 458 | | &RegexCharStackElem::Expression(_) => true, [INFO] [stderr] 459 | | _ => false, [INFO] [stderr] 460 | | }).map(|x|match x [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] 456 | stack.iter().filter(|&x|match *x [INFO] [stderr] 457 | { [INFO] [stderr] 458 | RegexCharStackElem::Expression(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:460:18 [INFO] [stderr] | [INFO] [stderr] 460 | }).map(|x|match x [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 461 | | { [INFO] [stderr] 462 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 463 | | _ => panic!("Ending"), [INFO] [stderr] 464 | | }).collect()); [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] 460 | }).map(|x|match *x [INFO] [stderr] 461 | { [INFO] [stderr] 462 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:469:32 [INFO] [stderr] | [INFO] [stderr] 469 | stack[i..].iter().map(|x|match x [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 470 | | { [INFO] [stderr] 471 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 472 | | _ => panic!("Ending"), [INFO] [stderr] 473 | | }).collect()); [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] 469 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 470 | { [INFO] [stderr] 471 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:497:32 [INFO] [stderr] | [INFO] [stderr] 497 | stack[i..].iter().map(|x|match x [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 498 | | { [INFO] [stderr] 499 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 500 | | _ => panic!("Bar"), [INFO] [stderr] 501 | | }).collect()); [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] 497 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 498 | { [INFO] [stderr] 499 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:560:37 [INFO] [stderr] | [INFO] [stderr] 560 | stack[i..].iter().filter(|&x|match x [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 561 | | { [INFO] [stderr] 562 | | &RegexCharStackElem::Expression(_) => true, [INFO] [stderr] 563 | | _ => false, [INFO] [stderr] 564 | | }).map(|x|match x [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] 560 | stack[i..].iter().filter(|&x|match *x [INFO] [stderr] 561 | { [INFO] [stderr] 562 | RegexCharStackElem::Expression(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:564:18 [INFO] [stderr] | [INFO] [stderr] 564 | }).map(|x|match x [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 565 | | { [INFO] [stderr] 566 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 567 | | _ => panic!("Close"), [INFO] [stderr] 568 | | }).collect()); [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] 564 | }).map(|x|match *x [INFO] [stderr] 565 | { [INFO] [stderr] 566 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:577:33 [INFO] [stderr] | [INFO] [stderr] 577 | stack[i..].iter().map(|x|match x [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 578 | | { [INFO] [stderr] 579 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 580 | | _ => panic!("Close"), [INFO] [stderr] 581 | | }).collect()); [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] 577 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 578 | { [INFO] [stderr] 579 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [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/lib.rs:711:76 [INFO] [stderr] | [INFO] [stderr] 711 | fn replace_vec_all<'a,J:Iterator+Clone>(&'a self, source:&'a Vec, replacement:J) -> ReplacerVecIt<'a,Self::Item,Self,J> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Item]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:736:39 [INFO] [stderr] | [INFO] [stderr] 736 | fn find_vec_all<'a>(&'a self, source:&'a Vec) -> FinderVecIt<'a,Self::Item,Self> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Item]` [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 `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:871:17 [INFO] [stderr] | [INFO] [stderr] 871 | for j in 0..nkept [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] 871 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1044:15 [INFO] [stderr] | [INFO] [stderr] 1044 | for j in 0..nkept [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] 1044 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1188:17 [INFO] [stderr] | [INFO] [stderr] 1188 | for j in 0..nkept [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] 1188 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1311:15 [INFO] [stderr] | [INFO] [stderr] 1311 | for j in 0..nkept [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] 1311 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/lib.rs:1383:10 [INFO] [stderr] | [INFO] [stderr] 1383 | if let Some(_)=self.zero_firsts.get(&elem) [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 1384 | | { [INFO] [stderr] 1385 | | return true; [INFO] [stderr] 1386 | | } [INFO] [stderr] ... | [INFO] [stderr] 1389 | | return false; [INFO] [stderr] 1390 | | } [INFO] [stderr] | |_________- help: try this: `if self.zero_firsts.get(&elem).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/lib.rs:1396:36 [INFO] [stderr] | [INFO] [stderr] 1396 | pub fn compile_hash_map(&self,all:&Vec) -> StateMachineHashMap [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1517:24 [INFO] [stderr] | [INFO] [stderr] 1517 | machine.zero_firsts[elem.clone() as usize]=true; [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*elem` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:28:3 [INFO] [stderr] | [INFO] [stderr] 28 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | &EmptySet => match other [INFO] [stderr] 31 | | { [INFO] [stderr] ... | [INFO] [stderr] 84 | | }, [INFO] [stderr] 85 | | } [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] 28 | match *self [INFO] [stderr] 29 | { [INFO] [stderr] 30 | EmptySet => match other [INFO] [stderr] 31 | { [INFO] [stderr] 32 | &EmptySet => Ordering::Equal, [INFO] [stderr] 33 | _ => Ordering::Less, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | &EmptySet => match other [INFO] [stderr] | __________________________^ [INFO] [stderr] 31 | | { [INFO] [stderr] 32 | | &EmptySet => Ordering::Equal, [INFO] [stderr] 33 | | _ => Ordering::Less, [INFO] [stderr] 34 | | } [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] 30 | &EmptySet => match *other [INFO] [stderr] 31 | { [INFO] [stderr] 32 | EmptySet => Ordering::Equal, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:35:20 [INFO] [stderr] | [INFO] [stderr] 35 | &EmptyString => match other [INFO] [stderr] | _____________________________^ [INFO] [stderr] 36 | | { [INFO] [stderr] 37 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 38 | | &EmptyString => Ordering::Equal, [INFO] [stderr] 39 | | _ => Ordering::Less, [INFO] [stderr] 40 | | }, [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] 35 | &EmptyString => match *other [INFO] [stderr] 36 | { [INFO] [stderr] 37 | EmptySet => Ordering::Greater, [INFO] [stderr] 38 | EmptyString => Ordering::Equal, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:41:24 [INFO] [stderr] | [INFO] [stderr] 41 | &Single(ref lit) => match other [INFO] [stderr] | _________________________________^ [INFO] [stderr] 42 | | { [INFO] [stderr] 43 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 44 | | &EmptyString => Ordering::Greater, [INFO] [stderr] 45 | | &Single(ref lit_other) => lit.cmp(lit_other), [INFO] [stderr] 46 | | _ => Ordering::Less, [INFO] [stderr] 47 | | }, [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] 41 | &Single(ref lit) => match *other [INFO] [stderr] 42 | { [INFO] [stderr] 43 | EmptySet => Ordering::Greater, [INFO] [stderr] 44 | EmptyString => Ordering::Greater, [INFO] [stderr] 45 | Single(ref lit_other) => lit.cmp(lit_other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:48:27 [INFO] [stderr] | [INFO] [stderr] 48 | &Disjunction(ref v) => match other [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 49 | | { [INFO] [stderr] 50 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 51 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 54 | | _ => Ordering::Less, [INFO] [stderr] 55 | | }, [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] 48 | &Disjunction(ref v) => match *other [INFO] [stderr] 49 | { [INFO] [stderr] 50 | EmptySet => Ordering::Greater, [INFO] [stderr] 51 | EmptyString => Ordering::Greater, [INFO] [stderr] 52 | Single(_) => Ordering::Greater, [INFO] [stderr] 53 | Disjunction(ref v_other) => v.cmp(v_other), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:56:29 [INFO] [stderr] | [INFO] [stderr] 56 | &Concatenation(ref v) => match other [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 57 | | { [INFO] [stderr] 58 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 59 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 63 | | _ => Ordering::Less, [INFO] [stderr] 64 | | }, [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] 56 | &Concatenation(ref v) => match *other [INFO] [stderr] 57 | { [INFO] [stderr] 58 | EmptySet => Ordering::Greater, [INFO] [stderr] 59 | EmptyString => Ordering::Greater, [INFO] [stderr] 60 | Single(_) => Ordering::Greater, [INFO] [stderr] 61 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | &KleeneStar(ref e) => match other [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 66 | | { [INFO] [stderr] 67 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 68 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 73 | | _ => Ordering::Less, [INFO] [stderr] 74 | | }, [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] 65 | &KleeneStar(ref e) => match *other [INFO] [stderr] 66 | { [INFO] [stderr] 67 | EmptySet => Ordering::Greater, [INFO] [stderr] 68 | EmptyString => Ordering::Greater, [INFO] [stderr] 69 | Single(_) => Ordering::Greater, [INFO] [stderr] 70 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:75:26 [INFO] [stderr] | [INFO] [stderr] 75 | &Complement(ref e) => match other [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 76 | | { [INFO] [stderr] 77 | | &EmptySet => Ordering::Greater, [INFO] [stderr] 78 | | &EmptyString => Ordering::Greater, [INFO] [stderr] ... | [INFO] [stderr] 83 | | &Complement(ref e_other) => e.cmp(e_other), [INFO] [stderr] 84 | | }, [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] 75 | &Complement(ref e) => match *other [INFO] [stderr] 76 | { [INFO] [stderr] 77 | EmptySet => Ordering::Greater, [INFO] [stderr] 78 | EmptyString => Ordering::Greater, [INFO] [stderr] 79 | Single(_) => Ordering::Greater, [INFO] [stderr] 80 | Disjunction(_) => Ordering::Greater, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:115:3 [INFO] [stderr] | [INFO] [stderr] 115 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 116 | | { [INFO] [stderr] 117 | | &EmptySet => EmptySet, [INFO] [stderr] 118 | | &EmptyString => EmptyString, [INFO] [stderr] ... | [INFO] [stderr] 178 | | &Complement(ref v) => Complement(v.clone()), [INFO] [stderr] 179 | | } [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] 115 | match *self [INFO] [stderr] 116 | { [INFO] [stderr] 117 | EmptySet => EmptySet, [INFO] [stderr] 118 | EmptyString => EmptyString, [INFO] [stderr] 119 | Single(ref lit) => Single(lit.clone()), [INFO] [stderr] 120 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:184:3 [INFO] [stderr] | [INFO] [stderr] 184 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 185 | | { [INFO] [stderr] 186 | | &EmptySet => String::from("@emptyset"), [INFO] [stderr] 187 | | &EmptyString => String::from(""), [INFO] [stderr] ... | [INFO] [stderr] 209 | | &Complement(ref v) => String::from("[^")+&v.iter().map(t_to_string).collect::()+&String::from("]"), [INFO] [stderr] 210 | | } [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] 184 | match *self [INFO] [stderr] 185 | { [INFO] [stderr] 186 | EmptySet => String::from("@emptyset"), [INFO] [stderr] 187 | EmptyString => String::from(""), [INFO] [stderr] 188 | Single(ref lit) => t_to_string(&lit), [INFO] [stderr] 189 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:214:3 [INFO] [stderr] | [INFO] [stderr] 214 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 215 | | { [INFO] [stderr] 216 | | &EmptySet => false, [INFO] [stderr] 217 | | &EmptyString => true, [INFO] [stderr] ... | [INFO] [stderr] 242 | | &Complement(_) => false, [INFO] [stderr] 243 | | } [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] 214 | match *self [INFO] [stderr] 215 | { [INFO] [stderr] 216 | EmptySet => false, [INFO] [stderr] 217 | EmptyString => true, [INFO] [stderr] 218 | Single(_) => false, [INFO] [stderr] 219 | Disjunction(ref v) => [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:247:3 [INFO] [stderr] | [INFO] [stderr] 247 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 248 | | { [INFO] [stderr] 249 | | &EmptySet => EmptySet, [INFO] [stderr] 250 | | &EmptyString => EmptySet, [INFO] [stderr] ... | [INFO] [stderr] 292 | | }, [INFO] [stderr] 293 | | } [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] 247 | match *self [INFO] [stderr] 248 | { [INFO] [stderr] 249 | EmptySet => EmptySet, [INFO] [stderr] 250 | EmptyString => EmptySet, [INFO] [stderr] 251 | Single(ref lit) => if *lit==*argument { EmptyString } else { EmptySet }, [INFO] [stderr] 252 | Disjunction(ref v) => Disjunction(v.iter().map(|x|Rc::new(x.simple_derivative(argument))).collect()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:268:11 [INFO] [stderr] | [INFO] [stderr] 268 | while w.len()>0 [INFO] [stderr] | ^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!w.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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:301:3 [INFO] [stderr] | [INFO] [stderr] 301 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 302 | | { [INFO] [stderr] 303 | | &EmptySet => EmptySet, [INFO] [stderr] 304 | | &EmptyString => EmptyString, [INFO] [stderr] ... | [INFO] [stderr] 309 | | &Complement(ref v) => Complement(v.iter().map(f).collect()), [INFO] [stderr] 310 | | } [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] 301 | match *self [INFO] [stderr] 302 | { [INFO] [stderr] 303 | EmptySet => EmptySet, [INFO] [stderr] 304 | EmptyString => EmptyString, [INFO] [stderr] 305 | Single(ref lit) => Single(f(lit)), [INFO] [stderr] 306 | Disjunction(ref v) => Disjunction(v.iter().map(|x|Rc::new(x.map(f))).collect()), [INFO] [stderr] ... [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/lib.rs:312:23 [INFO] [stderr] | [INFO] [stderr] 312 | fn firsts(&self, all:&Vec) -> BTreeSet [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:315:3 [INFO] [stderr] | [INFO] [stderr] 315 | match self [INFO] [stderr] | _________^ [INFO] [stderr] 316 | | { [INFO] [stderr] 317 | | &EmptySet => (), [INFO] [stderr] 318 | | &EmptyString => (), [INFO] [stderr] ... | [INFO] [stderr] 357 | | }, [INFO] [stderr] 358 | | }; [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] 315 | match *self [INFO] [stderr] 316 | { [INFO] [stderr] 317 | EmptySet => (), [INFO] [stderr] 318 | EmptyString => (), [INFO] [stderr] 319 | Single(ref lit) => [INFO] [stderr] 320 | { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:456:32 [INFO] [stderr] | [INFO] [stderr] 456 | stack.iter().filter(|&x|match x [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 457 | | { [INFO] [stderr] 458 | | &RegexCharStackElem::Expression(_) => true, [INFO] [stderr] 459 | | _ => false, [INFO] [stderr] 460 | | }).map(|x|match x [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] 456 | stack.iter().filter(|&x|match *x [INFO] [stderr] 457 | { [INFO] [stderr] 458 | RegexCharStackElem::Expression(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:460:18 [INFO] [stderr] | [INFO] [stderr] 460 | }).map(|x|match x [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 461 | | { [INFO] [stderr] 462 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 463 | | _ => panic!("Ending"), [INFO] [stderr] 464 | | }).collect()); [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] 460 | }).map(|x|match *x [INFO] [stderr] 461 | { [INFO] [stderr] 462 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:469:32 [INFO] [stderr] | [INFO] [stderr] 469 | stack[i..].iter().map(|x|match x [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 470 | | { [INFO] [stderr] 471 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 472 | | _ => panic!("Ending"), [INFO] [stderr] 473 | | }).collect()); [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] 469 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 470 | { [INFO] [stderr] 471 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:497:32 [INFO] [stderr] | [INFO] [stderr] 497 | stack[i..].iter().map(|x|match x [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 498 | | { [INFO] [stderr] 499 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 500 | | _ => panic!("Bar"), [INFO] [stderr] 501 | | }).collect()); [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] 497 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 498 | { [INFO] [stderr] 499 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:560:37 [INFO] [stderr] | [INFO] [stderr] 560 | stack[i..].iter().filter(|&x|match x [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 561 | | { [INFO] [stderr] 562 | | &RegexCharStackElem::Expression(_) => true, [INFO] [stderr] 563 | | _ => false, [INFO] [stderr] 564 | | }).map(|x|match x [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] 560 | stack[i..].iter().filter(|&x|match *x [INFO] [stderr] 561 | { [INFO] [stderr] 562 | RegexCharStackElem::Expression(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:564:18 [INFO] [stderr] | [INFO] [stderr] 564 | }).map(|x|match x [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 565 | | { [INFO] [stderr] 566 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 567 | | _ => panic!("Close"), [INFO] [stderr] 568 | | }).collect()); [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] 564 | }).map(|x|match *x [INFO] [stderr] 565 | { [INFO] [stderr] 566 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:577:33 [INFO] [stderr] | [INFO] [stderr] 577 | stack[i..].iter().map(|x|match x [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 578 | | { [INFO] [stderr] 579 | | &RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] 580 | | _ => panic!("Close"), [INFO] [stderr] 581 | | }).collect()); [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] 577 | stack[i..].iter().map(|x|match *x [INFO] [stderr] 578 | { [INFO] [stderr] 579 | RegexCharStackElem::Expression(ref e) => e.clone(), [INFO] [stderr] | [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/lib.rs:711:76 [INFO] [stderr] | [INFO] [stderr] 711 | fn replace_vec_all<'a,J:Iterator+Clone>(&'a self, source:&'a Vec, replacement:J) -> ReplacerVecIt<'a,Self::Item,Self,J> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Item]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:736:39 [INFO] [stderr] | [INFO] [stderr] 736 | fn find_vec_all<'a>(&'a self, source:&'a Vec) -> FinderVecIt<'a,Self::Item,Self> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Item]` [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 `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:871:17 [INFO] [stderr] | [INFO] [stderr] 871 | for j in 0..nkept [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] 871 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1044:15 [INFO] [stderr] | [INFO] [stderr] 1044 | for j in 0..nkept [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] 1044 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1188:17 [INFO] [stderr] | [INFO] [stderr] 1188 | for j in 0..nkept [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] 1188 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `v` [INFO] [stderr] --> src/lib.rs:1311:15 [INFO] [stderr] | [INFO] [stderr] 1311 | for j in 0..nkept [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] 1311 | for (j, ) in v.iter().enumerate().take(nkept) [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/lib.rs:1383:10 [INFO] [stderr] | [INFO] [stderr] 1383 | if let Some(_)=self.zero_firsts.get(&elem) [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 1384 | | { [INFO] [stderr] 1385 | | return true; [INFO] [stderr] 1386 | | } [INFO] [stderr] ... | [INFO] [stderr] 1389 | | return false; [INFO] [stderr] 1390 | | } [INFO] [stderr] | |_________- help: try this: `if self.zero_firsts.get(&elem).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/lib.rs:1396:36 [INFO] [stderr] | [INFO] [stderr] 1396 | pub fn compile_hash_map(&self,all:&Vec) -> StateMachineHashMap [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1517:24 [INFO] [stderr] | [INFO] [stderr] 1517 | machine.zero_firsts[elem.clone() as usize]=true; [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*elem` [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] Finished dev [unoptimized + debuginfo] target(s) in 1.04s [INFO] running `"docker" "inspect" "4c06d56b4421990a5184fa52f363b7d571c01416c485b30642b802b314d9edef"` [INFO] running `"docker" "rm" "-f" "4c06d56b4421990a5184fa52f363b7d571c01416c485b30642b802b314d9edef"` [INFO] [stdout] 4c06d56b4421990a5184fa52f363b7d571c01416c485b30642b802b314d9edef