[INFO] updating cached repository jasonhansel/paraphrase [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jasonhansel/paraphrase [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jasonhansel/paraphrase" "work/ex/clippy-test-run/sources/stable/gh/jasonhansel/paraphrase"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jasonhansel/paraphrase'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jasonhansel/paraphrase" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jasonhansel/paraphrase"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jasonhansel/paraphrase'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ce446649cb3b9538fff5ad09560720368c7e7eab [INFO] sha for GitHub repo jasonhansel/paraphrase: ce446649cb3b9538fff5ad09560720368c7e7eab [INFO] validating manifest of jasonhansel/paraphrase 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 jasonhansel/paraphrase 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 jasonhansel/paraphrase [INFO] finished frobbing jasonhansel/paraphrase [INFO] frobbed toml for jasonhansel/paraphrase written to work/ex/clippy-test-run/sources/stable/gh/jasonhansel/paraphrase/Cargo.toml [INFO] started frobbing jasonhansel/paraphrase [INFO] finished frobbing jasonhansel/paraphrase [INFO] frobbed toml for jasonhansel/paraphrase written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jasonhansel/paraphrase/Cargo.toml [INFO] crate jasonhansel/paraphrase 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 jasonhansel/paraphrase against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jasonhansel/paraphrase:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 76f70b71224d1d49b58519dc4e4e914033f9a3c976ef41b76cd72c3a76b0141a [INFO] running `"docker" "start" "-a" "76f70b71224d1d49b58519dc4e4e914033f9a3c976ef41b76cd72c3a76b0141a"` [INFO] [stderr] Checking clap v2.29.2 [INFO] [stderr] Compiling structopt-derive v0.1.6 [INFO] [stderr] Checking structopt v0.1.7 [INFO] [stderr] Checking paraphrase v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/scope.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | sigil: sigil, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `sigil` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] | [INFO] [stderr] --> src/scope.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | sigil: sigil, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `sigil` [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] = 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/expand.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expand.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | scope: scope, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expand.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expand.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | stack: stack, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expand.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | scope: scope, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `scope` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/expand.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | stack: stack, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused imports: `IndexMut`, `Index` [INFO] [stderr] --> src/value.rs:13:20 [INFO] [stderr] | [INFO] [stderr] 13 | use std::ops::{Add,Index,IndexMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / return ArcSlice { [INFO] [stderr] 38 | | range: (0..(s.len())), [INFO] [stderr] 39 | | string: Arc::new(s) [INFO] [stderr] 40 | | } [INFO] [stderr] | |_________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 37 | ArcSlice { [INFO] [stderr] 38 | range: (0..(s.len())), [INFO] [stderr] 39 | string: Arc::new(s) [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return ArcSlice::from_string("".to_owned()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ArcSlice::from_string("".to_owned())` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return &self.string[self.range.clone()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.string[self.range.clone()]` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:56:19 [INFO] [stderr] | [INFO] [stderr] 56 | let res = Arc::try_unwrap(self.string) [INFO] [stderr] | ___________________^ [INFO] [stderr] 57 | | .map(|mut x| { x.split_off(range.end); x.split_off(range.start) }) [INFO] [stderr] 58 | | .unwrap_or_else(|x| { (&x[range.clone()]).to_owned() }); [INFO] [stderr] | |____________________________________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / return ArcSlice { [INFO] [stderr] 86 | | string: self.string.clone(), [INFO] [stderr] 87 | | range: Range { start: self.range.start + range.start, end: self.range.start + range.end } [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 85 | ArcSlice { [INFO] [stderr] 86 | string: self.string.clone(), [INFO] [stderr] 87 | range: Range { start: self.range.start + range.start, end: self.range.start + range.end } [INFO] [stderr] 88 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:121:3 [INFO] [stderr] | [INFO] [stderr] 121 | b [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:117:11 [INFO] [stderr] | [INFO] [stderr] 117 | let b = ArcSlice { [INFO] [stderr] | _________________^ [INFO] [stderr] 118 | | string: self.string.clone(), [INFO] [stderr] 119 | | range: self.range.clone() [INFO] [stderr] 120 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | / return Rope { [INFO] [stderr] 210 | | data: Vec::new() [INFO] [stderr] 211 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 209 | Rope { [INFO] [stderr] 210 | data: Vec::new() [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | / return Rope { [INFO] [stderr] 229 | | data: { [INFO] [stderr] 230 | | let mut l = Vec::new(); [INFO] [stderr] 231 | | l.append(&mut other.data); [INFO] [stderr] ... | [INFO] [stderr] 234 | | } [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 228 | Rope { [INFO] [stderr] 229 | data: { [INFO] [stderr] 230 | let mut l = Vec::new(); [INFO] [stderr] 231 | l.append(&mut other.data); [INFO] [stderr] 232 | l.append(&mut self.data); [INFO] [stderr] 233 | l [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:245:9 [INFO] [stderr] | [INFO] [stderr] 245 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:322:13 [INFO] [stderr] | [INFO] [stderr] 322 | return Some(prefix) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(prefix)` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:325:13 [INFO] [stderr] | [INFO] [stderr] 325 | return None [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | / return self.split_at(false, true, &mut |_| { [INFO] [stderr] 341 | | if first == true { [INFO] [stderr] 342 | | first = false; [INFO] [stderr] 343 | | false [INFO] [stderr] ... | [INFO] [stderr] 346 | | } [INFO] [stderr] 347 | | }).and_then(|x| x.get_char()); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 340 | self.split_at(false, true, &mut |_| { [INFO] [stderr] 341 | if first == true { [INFO] [stderr] 342 | first = false; [INFO] [stderr] 343 | false [INFO] [stderr] 344 | } else { [INFO] [stderr] 345 | true [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if let` head expression [INFO] [stderr] --> src/base.rs:201:36 [INFO] [stderr] | [INFO] [stderr] 201 | if let Some(tag) = (name_tag.get(1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `UnwindSafe` [INFO] [stderr] --> src/expand.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | use std::panic::{UnwindSafe,AssertUnwindSafe}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expand.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | return r as Fut [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `r as Fut` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/expand.rs:238:41 [INFO] [stderr] | [INFO] [stderr] 238 | self.final_join = Some(Box::new((self.handle_call(cmd, call)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/expand.rs:238:41 [INFO] [stderr] | [INFO] [stderr] 238 | self.final_join = Some(Box::new((self.handle_call(cmd, call)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expand.rs:273:25 [INFO] [stderr] | [INFO] [stderr] 273 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/expand.rs:275:25 [INFO] [stderr] | [INFO] [stderr] 275 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/expand.rs:407:26 [INFO] [stderr] | [INFO] [stderr] 407 | Box::new((final_join.map(|w| { [INFO] [stderr] | __________________________^ [INFO] [stderr] 408 | | match w { [INFO] [stderr] 409 | | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | | EvalResult::Done(val) => { [INFO] [stderr] ... | [INFO] [stderr] 414 | | } [INFO] [stderr] 415 | | }))) as Fut> [INFO] [stderr] | |___________________^ [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 407 | Box::new(final_join.map(|w| { [INFO] [stderr] 408 | match w { [INFO] [stderr] 409 | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | EvalResult::Done(val) => { [INFO] [stderr] 411 | joins.push(Box::new(ok(Rope::from_value(val)))); [INFO] [stderr] 412 | Loop::Break(joins) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/expand.rs:407:26 [INFO] [stderr] | [INFO] [stderr] 407 | Box::new((final_join.map(|w| { [INFO] [stderr] | __________________________^ [INFO] [stderr] 408 | | match w { [INFO] [stderr] 409 | | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | | EvalResult::Done(val) => { [INFO] [stderr] ... | [INFO] [stderr] 414 | | } [INFO] [stderr] 415 | | }))) as Fut> [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/expand.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | resc [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/expand.rs:428:24 [INFO] [stderr] | [INFO] [stderr] 428 | let resc = res.coerce(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `CpuFuture` [INFO] [stderr] --> src/main.rs:38:23 [INFO] [stderr] | [INFO] [stderr] 38 | use futures_cpupool::{CpuFuture, CpuPool}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/main.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/main.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `IndexMut`, `Index` [INFO] [stderr] --> src/value.rs:13:20 [INFO] [stderr] | [INFO] [stderr] 13 | use std::ops::{Add,Index,IndexMut}; [INFO] [stderr] | ^^^^^ ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / return ArcSlice { [INFO] [stderr] 38 | | range: (0..(s.len())), [INFO] [stderr] 39 | | string: Arc::new(s) [INFO] [stderr] 40 | | } [INFO] [stderr] | |_________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 37 | ArcSlice { [INFO] [stderr] 38 | range: (0..(s.len())), [INFO] [stderr] 39 | string: Arc::new(s) [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return ArcSlice::from_string("".to_owned()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ArcSlice::from_string("".to_owned())` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return &self.string[self.range.clone()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.string[self.range.clone()]` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:56:19 [INFO] [stderr] | [INFO] [stderr] 56 | let res = Arc::try_unwrap(self.string) [INFO] [stderr] | ___________________^ [INFO] [stderr] 57 | | .map(|mut x| { x.split_off(range.end); x.split_off(range.start) }) [INFO] [stderr] 58 | | .unwrap_or_else(|x| { (&x[range.clone()]).to_owned() }); [INFO] [stderr] | |____________________________________________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / return ArcSlice { [INFO] [stderr] 86 | | string: self.string.clone(), [INFO] [stderr] 87 | | range: Range { start: self.range.start + range.start, end: self.range.start + range.end } [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 85 | ArcSlice { [INFO] [stderr] 86 | string: self.string.clone(), [INFO] [stderr] 87 | range: Range { start: self.range.start + range.start, end: self.range.start + range.end } [INFO] [stderr] 88 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:121:3 [INFO] [stderr] | [INFO] [stderr] 121 | b [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:117:11 [INFO] [stderr] | [INFO] [stderr] 117 | let b = ArcSlice { [INFO] [stderr] | _________________^ [INFO] [stderr] 118 | | string: self.string.clone(), [INFO] [stderr] 119 | | range: self.range.clone() [INFO] [stderr] 120 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | / return Rope { [INFO] [stderr] 210 | | data: Vec::new() [INFO] [stderr] 211 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 209 | Rope { [INFO] [stderr] 210 | data: Vec::new() [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | / return Rope { [INFO] [stderr] 229 | | data: { [INFO] [stderr] 230 | | let mut l = Vec::new(); [INFO] [stderr] 231 | | l.append(&mut other.data); [INFO] [stderr] ... | [INFO] [stderr] 234 | | } [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 228 | Rope { [INFO] [stderr] 229 | data: { [INFO] [stderr] 230 | let mut l = Vec::new(); [INFO] [stderr] 231 | l.append(&mut other.data); [INFO] [stderr] 232 | l.append(&mut self.data); [INFO] [stderr] 233 | l [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/value.rs:245:9 [INFO] [stderr] | [INFO] [stderr] 245 | return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:322:13 [INFO] [stderr] | [INFO] [stderr] 322 | return Some(prefix) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(prefix)` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:325:13 [INFO] [stderr] | [INFO] [stderr] 325 | return None [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: unneeded return statement [INFO] [stderr] --> src/value.rs:340:9 [INFO] [stderr] | [INFO] [stderr] 340 | / return self.split_at(false, true, &mut |_| { [INFO] [stderr] 341 | | if first == true { [INFO] [stderr] 342 | | first = false; [INFO] [stderr] 343 | | false [INFO] [stderr] ... | [INFO] [stderr] 346 | | } [INFO] [stderr] 347 | | }).and_then(|x| x.get_char()); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 340 | self.split_at(false, true, &mut |_| { [INFO] [stderr] 341 | if first == true { [INFO] [stderr] 342 | first = false; [INFO] [stderr] 343 | false [INFO] [stderr] 344 | } else { [INFO] [stderr] 345 | true [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if let` head expression [INFO] [stderr] --> src/base.rs:201:36 [INFO] [stderr] | [INFO] [stderr] 201 | if let Some(tag) = (name_tag.get(1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `UnwindSafe` [INFO] [stderr] --> src/expand.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | use std::panic::{UnwindSafe,AssertUnwindSafe}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expand.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | return r as Fut [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `r as Fut` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/expand.rs:238:41 [INFO] [stderr] | [INFO] [stderr] 238 | self.final_join = Some(Box::new((self.handle_call(cmd, call)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/expand.rs:238:41 [INFO] [stderr] | [INFO] [stderr] 238 | self.final_join = Some(Box::new((self.handle_call(cmd, call)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/expand.rs:273:25 [INFO] [stderr] | [INFO] [stderr] 273 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: unneeded return statement [INFO] [stderr] --> src/expand.rs:275:25 [INFO] [stderr] | [INFO] [stderr] 275 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/expand.rs:407:26 [INFO] [stderr] | [INFO] [stderr] 407 | Box::new((final_join.map(|w| { [INFO] [stderr] | __________________________^ [INFO] [stderr] 408 | | match w { [INFO] [stderr] 409 | | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | | EvalResult::Done(val) => { [INFO] [stderr] ... | [INFO] [stderr] 414 | | } [INFO] [stderr] 415 | | }))) as Fut> [INFO] [stderr] | |___________________^ [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 407 | Box::new(final_join.map(|w| { [INFO] [stderr] 408 | match w { [INFO] [stderr] 409 | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | EvalResult::Done(val) => { [INFO] [stderr] 411 | joins.push(Box::new(ok(Rope::from_value(val)))); [INFO] [stderr] 412 | Loop::Break(joins) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/expand.rs:407:26 [INFO] [stderr] | [INFO] [stderr] 407 | Box::new((final_join.map(|w| { [INFO] [stderr] | __________________________^ [INFO] [stderr] 408 | | match w { [INFO] [stderr] 409 | | EvalResult::Expand(new_scope, new_rope) => Loop::Continue((joins, new_scope, new_rope)), [INFO] [stderr] 410 | | EvalResult::Done(val) => { [INFO] [stderr] ... | [INFO] [stderr] 414 | | } [INFO] [stderr] 415 | | }))) as Fut> [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/expand.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | resc [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/expand.rs:428:24 [INFO] [stderr] | [INFO] [stderr] 428 | let resc = res.coerce(); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `CpuFuture` [INFO] [stderr] --> src/main.rs:38:23 [INFO] [stderr] | [INFO] [stderr] 38 | use futures_cpupool::{CpuFuture, CpuPool}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::borrow::Cow` [INFO] [stderr] --> src/main.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | use std::borrow::Cow; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::rc::Rc` [INFO] [stderr] --> src/main.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | use std::rc::Rc; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/value.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | let range = self.range.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable statement [INFO] [stderr] --> src/value.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | let range = self.range.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_scope` [INFO] [stderr] --> src/expand.rs:306:25 [INFO] [stderr] | [INFO] [stderr] 306 | let new_scope = scope.clone(); [INFO] [stderr] | ^^^^^^^^^ help: consider using `_new_scope` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/expand.rs:385:9 [INFO] [stderr] | [INFO] [stderr] 385 | let id = rand::random::(); [INFO] [stderr] | ^^ help: consider using `_id` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scope` [INFO] [stderr] --> src/expand.rs:186:17 [INFO] [stderr] | [INFO] [stderr] 186 | let scope = self.scope.clone(); [INFO] [stderr] | ^^^^^ help: consider using `_scope` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pool2` [INFO] [stderr] --> src/expand.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | let pool2 = self.pool.clone(); [INFO] [stderr] | ^^^^^ help: consider using `_pool2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scope` [INFO] [stderr] --> src/expand.rs:179:54 [INFO] [stderr] | [INFO] [stderr] 179 | fn end_command(&mut self, cmd: Vec, scope: Arc) { [INFO] [stderr] | ^^^^^ help: consider using `_scope` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scope.rs:196:41 [INFO] [stderr] | [INFO] [stderr] 196 | code(args.into_iter().map(|mut x| { x }).collect()) [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/base.rs:116:87 [INFO] [stderr] | [INFO] [stderr] 116 | (Some(Str(n)), Some(Str(replacement)), Some(Closure(ValueClosure(inner_scope, mut h))), None, ..) => { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_scope` [INFO] [stderr] --> src/expand.rs:306:25 [INFO] [stderr] | [INFO] [stderr] 306 | let new_scope = scope.clone(); [INFO] [stderr] | ^^^^^^^^^ help: consider using `_new_scope` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/expand.rs:385:9 [INFO] [stderr] | [INFO] [stderr] 385 | let id = rand::random::(); [INFO] [stderr] | ^^ help: consider using `_id` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scope` [INFO] [stderr] --> src/expand.rs:186:17 [INFO] [stderr] | [INFO] [stderr] 186 | let scope = self.scope.clone(); [INFO] [stderr] | ^^^^^ help: consider using `_scope` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pool2` [INFO] [stderr] --> src/expand.rs:187:17 [INFO] [stderr] | [INFO] [stderr] 187 | let pool2 = self.pool.clone(); [INFO] [stderr] | ^^^^^ help: consider using `_pool2` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `scope` [INFO] [stderr] --> src/expand.rs:179:54 [INFO] [stderr] | [INFO] [stderr] 179 | fn end_command(&mut self, cmd: Vec, scope: Arc) { [INFO] [stderr] | ^^^^^ help: consider using `_scope` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:220:29 [INFO] [stderr] | [INFO] [stderr] 220 | fn raw_param(&mut self, mut rope: Rope) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:227:54 [INFO] [stderr] | [INFO] [stderr] 227 | fn semi_param(&mut self, stack: Vec, mut rope: Rope, cmd: Vec) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:240:24 [INFO] [stderr] | [INFO] [stderr] 240 | fn text(&mut self, mut rope: Rope) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:389:92 [INFO] [stderr] | [INFO] [stderr] 389 | loop_fn(( (vec![] as Vec>), _scope, _rope), move |(mut joins, mut scope, mut rope)| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/scope.rs:196:41 [INFO] [stderr] | [INFO] [stderr] 196 | code(args.into_iter().map(|mut x| { x }).collect()) [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / fn split_at<'t>(&'t mut self, idx: usize) -> (ArcSlice) { [INFO] [stderr] 77 | | let mut left = ArcSlice::from_string(self.to_str().to_owned()); [INFO] [stderr] 78 | | left.range = Range{ start: 0, end: idx}; [INFO] [stderr] 79 | | // ArcSlice { string: self.string.clone(), range: Range { start: self.range.start, end: self.range.start+idx } }; [INFO] [stderr] 80 | | (*self).range.start += idx; [INFO] [stderr] 81 | | left [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / match self { [INFO] [stderr] 182 | | &mut ValueClosure(ref sc, ref mut ro) => { ValueClosure(sc.clone(), ro.clone() ) }, [INFO] [stderr] 183 | | } [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] 181 | match *self { [INFO] [stderr] 182 | ValueClosure(ref sc, ref mut ro) => { ValueClosure(sc.clone(), ro.clone() ) }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | pub fn as_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:196:19 [INFO] [stderr] | [INFO] [stderr] 196 | pub fn to_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/base.rs:116:87 [INFO] [stderr] | [INFO] [stderr] 116 | (Some(Str(n)), Some(Str(replacement)), Some(Closure(ValueClosure(inner_scope, mut h))), None, ..) => { [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | / match leaf { [INFO] [stderr] 241 | | &Chr(ref c) => { if c.range.len() != 0 { return false } }, [INFO] [stderr] 242 | | &Own(_) => { return 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] 240 | match *leaf { [INFO] [stderr] 241 | Chr(ref c) => { if c.range.len() != 0 { return false } }, [INFO] [stderr] 242 | Own(_) => { return false } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | / match leaf { [INFO] [stderr] 251 | | &Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] 252 | | &Own(_) => { count += 1 } [INFO] [stderr] 253 | | } [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] 250 | match *leaf { [INFO] [stderr] 251 | Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] 252 | Own(_) => { count += 1 } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/value.rs:251:70 [INFO] [stderr] | [INFO] [stderr] 251 | &Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:258:19 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn to_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/value.rs:275:47 [INFO] [stderr] | [INFO] [stderr] 275 | if c.to_str().chars().any(|x| { !x.is_whitespace() }) { panic!(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self.data.last()? { [INFO] [stderr] 331 | | &Leaf::Own(_) => { None }, [INFO] [stderr] 332 | | &Leaf::Chr(ref ch) => { [INFO] [stderr] 333 | | ch.to_str().chars().next() [INFO] [stderr] 334 | | } [INFO] [stderr] 335 | | } [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] 330 | match *(self.data.last()?) { [INFO] [stderr] 331 | Leaf::Own(_) => { None }, [INFO] [stderr] 332 | Leaf::Chr(ref ch) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/value.rs:341:16 [INFO] [stderr] | [INFO] [stderr] 341 | if first == true { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `first` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/value.rs:356:9 [INFO] [stderr] | [INFO] [stderr] 356 | write!(f, "CODE<"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = 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] warning: static variable `latest_tag` should have an upper case name such as `LATEST_TAG` [INFO] [stderr] --> src/scope.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | static latest_tag : AtomicUsize = AtomicUsize::new(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &Native(_) => { write!(f, "[native code]") }, [INFO] [stderr] 39 | | &Tagger(t) => { write!(f, "[tagger {:?}]", t.0) }, [INFO] [stderr] 40 | | &User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] 41 | | &InOther(_) => { write!(f, "reference to other scope") } [INFO] [stderr] 42 | | } [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] 37 | match *self { [INFO] [stderr] 38 | Native(_) => { write!(f, "[native code]") }, [INFO] [stderr] 39 | Tagger(t) => { write!(f, "[tagger {:?}]", t.0) }, [INFO] [stderr] 40 | User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] 41 | InOther(_) => { write!(f, "reference to other scope") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/scope.rs:40:76 [INFO] [stderr] | [INFO] [stderr] 40 | &User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:172:27 [INFO] [stderr] | [INFO] [stderr] 172 | let other_scope = match val { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 173 | | &InOther(ref isc) => { isc.clone() } [INFO] [stderr] 174 | | _ => { scope.clone() } [INFO] [stderr] 175 | | }; [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] 172 | let other_scope = match *val { [INFO] [stderr] 173 | InOther(ref isc) => { isc.clone() } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/scope.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn eval<'c, 'v>(cmd_scope: Arc, command: Vec, mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/scope.rs:190:17 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn eval<'c, 'v>(cmd_scope: Arc, command: Vec, mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:191:5 [INFO] [stderr] | [INFO] [stderr] 191 | / match cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] 192 | | &Command::InOther(ref other_scope) => { [INFO] [stderr] 193 | | eval( other_scope.clone(), command, args) [INFO] [stderr] 194 | | }, [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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] 191 | match *cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] 192 | Command::InOther(ref other_scope) => { [INFO] [stderr] 193 | eval( other_scope.clone(), command, args) [INFO] [stderr] 194 | }, [INFO] [stderr] 195 | Command::Native(ref code) => { [INFO] [stderr] 196 | code(args.into_iter().map(|mut x| { x }).collect()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/scope.rs:191:11 [INFO] [stderr] | [INFO] [stderr] 191 | match cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cmd_scope.clone().commands[&command]` [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: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:220:29 [INFO] [stderr] | [INFO] [stderr] 220 | fn raw_param(&mut self, mut rope: Rope) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:227:54 [INFO] [stderr] | [INFO] [stderr] 227 | fn semi_param(&mut self, stack: Vec, mut rope: Rope, cmd: Vec) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:240:24 [INFO] [stderr] | [INFO] [stderr] 240 | fn text(&mut self, mut rope: Rope) { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/scope.rs:209:61 [INFO] [stderr] | [INFO] [stderr] 209 | for &ParamInfo{ref kind,ref name} in arg_names.into_iter().rev() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_args<'s>(mut args: Vec) -> (Option,Option,Option, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/base.rs:18:41 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_args<'s>(mut args: Vec) -> (Option,Option,Option, [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 19 | | Option,Option,Option, [INFO] [stderr] 20 | | Option) { [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | fn list<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:93:11 [INFO] [stderr] | [INFO] [stderr] 93 | fn assert<'s>(mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | fn change_char<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:133:10 [INFO] [stderr] | [INFO] [stderr] 133 | fn if_eq<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:143:15 [INFO] [stderr] | [INFO] [stderr] 143 | fn if_eq_then<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:154:14 [INFO] [stderr] | [INFO] [stderr] 154 | fn end_paren<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:163:12 [INFO] [stderr] | [INFO] [stderr] 163 | fn literal<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:189:11 [INFO] [stderr] | [INFO] [stderr] 189 | fn define<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:248:11 [INFO] [stderr] | [INFO] [stderr] 248 | fn expand<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:257:12 [INFO] [stderr] | [INFO] [stderr] 257 | fn rescope<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/expand.rs:389:92 [INFO] [stderr] | [INFO] [stderr] 389 | loop_fn(( (vec![] as Vec>), _scope, _rope), move |(mut joins, mut scope, mut rope)| { [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/value.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / fn split_at<'t>(&'t mut self, idx: usize) -> (ArcSlice) { [INFO] [stderr] 77 | | let mut left = ArcSlice::from_string(self.to_str().to_owned()); [INFO] [stderr] 78 | | left.range = Range{ start: 0, end: idx}; [INFO] [stderr] 79 | | // ArcSlice { string: self.string.clone(), range: Range { start: self.range.start, end: self.range.start+idx } }; [INFO] [stderr] 80 | | (*self).range.start += idx; [INFO] [stderr] 81 | | left [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | / match self { [INFO] [stderr] 182 | | &mut ValueClosure(ref sc, ref mut ro) => { ValueClosure(sc.clone(), ro.clone() ) }, [INFO] [stderr] 183 | | } [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] 181 | match *self { [INFO] [stderr] 182 | ValueClosure(ref sc, ref mut ro) => { ValueClosure(sc.clone(), ro.clone() ) }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | pub fn as_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:196:19 [INFO] [stderr] | [INFO] [stderr] 196 | pub fn to_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:240:13 [INFO] [stderr] | [INFO] [stderr] 240 | / match leaf { [INFO] [stderr] 241 | | &Chr(ref c) => { if c.range.len() != 0 { return false } }, [INFO] [stderr] 242 | | &Own(_) => { return 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] 240 | match *leaf { [INFO] [stderr] 241 | Chr(ref c) => { if c.range.len() != 0 { return false } }, [INFO] [stderr] 242 | Own(_) => { return false } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | / match leaf { [INFO] [stderr] 251 | | &Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] 252 | | &Own(_) => { count += 1 } [INFO] [stderr] 253 | | } [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] 250 | match *leaf { [INFO] [stderr] 251 | Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] 252 | Own(_) => { count += 1 } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/value.rs:251:70 [INFO] [stderr] | [INFO] [stderr] 251 | &Leaf::Chr(ref c) => { if c.to_str().chars().any(|x| { !x.is_whitespace() }) { return true } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:258:19 [INFO] [stderr] | [INFO] [stderr] 258 | pub fn to_str(self) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/expand.rs:181:12 [INFO] [stderr] | [INFO] [stderr] 181 | if self.calls.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.calls.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: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/value.rs:275:47 [INFO] [stderr] | [INFO] [stderr] 275 | if c.to_str().chars().any(|x| { !x.is_whitespace() }) { panic!(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / match self.data.last()? { [INFO] [stderr] 331 | | &Leaf::Own(_) => { None }, [INFO] [stderr] 332 | | &Leaf::Chr(ref ch) => { [INFO] [stderr] 333 | | ch.to_str().chars().next() [INFO] [stderr] 334 | | } [INFO] [stderr] 335 | | } [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] 330 | match *(self.data.last()?) { [INFO] [stderr] 331 | Leaf::Own(_) => { None }, [INFO] [stderr] 332 | Leaf::Chr(ref ch) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/value.rs:341:16 [INFO] [stderr] | [INFO] [stderr] 341 | if first == true { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `first` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/expand.rs:241:12 [INFO] [stderr] | [INFO] [stderr] 241 | if self.calls.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.calls.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:18 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:10 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:14 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/value.rs:356:9 [INFO] [stderr] | [INFO] [stderr] 356 | write!(f, "CODE<"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = 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] warning: static variable `latest_tag` should have an upper case name such as `LATEST_TAG` [INFO] [stderr] --> src/scope.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | static latest_tag : AtomicUsize = AtomicUsize::new(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:272:21 [INFO] [stderr] | [INFO] [stderr] 272 | / if ch.is_whitespace() { [INFO] [stderr] 273 | | return false; [INFO] [stderr] 274 | | } else { [INFO] [stderr] 275 | | return true; [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `return !ch.is_whitespace()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:281:25 [INFO] [stderr] | [INFO] [stderr] 281 | / if chr.is_alphabetic() || chr == '_' || chr.is_digit(10) { [INFO] [stderr] 282 | | false [INFO] [stderr] 283 | | } else { [INFO] [stderr] 284 | | true [INFO] [stderr] 285 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `!(chr.is_alphabetic() || chr == '_' || chr.is_digit(10))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &Native(_) => { write!(f, "[native code]") }, [INFO] [stderr] 39 | | &Tagger(t) => { write!(f, "[tagger {:?}]", t.0) }, [INFO] [stderr] 40 | | &User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] 41 | | &InOther(_) => { write!(f, "reference to other scope") } [INFO] [stderr] 42 | | } [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] 37 | match *self { [INFO] [stderr] 38 | Native(_) => { write!(f, "[native code]") }, [INFO] [stderr] 39 | Tagger(t) => { write!(f, "[tagger {:?}]", t.0) }, [INFO] [stderr] 40 | User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] 41 | InOther(_) => { write!(f, "reference to other scope") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/scope.rs:40:76 [INFO] [stderr] | [INFO] [stderr] 40 | &User(ref s, _, ref v) => { write!(f, "params (")?; s.fmt(f)?; write!(f, ") in "); v.fmt(f) }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:339:32 [INFO] [stderr] | [INFO] [stderr] 339 | } else if in_call { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 340 | | true [INFO] [stderr] 341 | | } else { [INFO] [stderr] 342 | | false [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `in_call` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:346:25 [INFO] [stderr] | [INFO] [stderr] 346 | / if chr == (scope.sigil) { [INFO] [stderr] 347 | | true [INFO] [stderr] 348 | | } else { [INFO] [stderr] 349 | | false [INFO] [stderr] 350 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `chr == (scope.sigil)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:379:25 [INFO] [stderr] | [INFO] [stderr] 379 | pub fn expand_with_pool<'f>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:172:27 [INFO] [stderr] | [INFO] [stderr] 172 | let other_scope = match val { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 173 | | &InOther(ref isc) => { isc.clone() } [INFO] [stderr] 174 | | _ => { scope.clone() } [INFO] [stderr] 175 | | }; [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] 172 | let other_scope = match *val { [INFO] [stderr] 173 | InOther(ref isc) => { isc.clone() } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/scope.rs:190:17 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn eval<'c, 'v>(cmd_scope: Arc, command: Vec, mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/scope.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | pub fn eval<'c, 'v>(cmd_scope: Arc, command: Vec, mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/scope.rs:191:5 [INFO] [stderr] | [INFO] [stderr] 191 | / match cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] 192 | | &Command::InOther(ref other_scope) => { [INFO] [stderr] 193 | | eval( other_scope.clone(), command, args) [INFO] [stderr] 194 | | }, [INFO] [stderr] ... | [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | } [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] 191 | match *cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] 192 | Command::InOther(ref other_scope) => { [INFO] [stderr] 193 | eval( other_scope.clone(), command, args) [INFO] [stderr] 194 | }, [INFO] [stderr] 195 | Command::Native(ref code) => { [INFO] [stderr] 196 | code(args.into_iter().map(|mut x| { x }).collect()) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/scope.rs:191:11 [INFO] [stderr] | [INFO] [stderr] 191 | match cmd_scope.clone().commands.get(&command).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cmd_scope.clone().commands[&command]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/scope.rs:209:61 [INFO] [stderr] | [INFO] [stderr] 209 | for &ParamInfo{ref kind,ref name} in arg_names.into_iter().rev() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_args<'s>(mut args: Vec) -> (Option,Option,Option, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/base.rs:18:41 [INFO] [stderr] | [INFO] [stderr] 18 | fn get_args<'s>(mut args: Vec) -> (Option,Option,Option, [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 19 | | Option,Option,Option, [INFO] [stderr] 20 | | Option) { [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | fn list<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:93:11 [INFO] [stderr] | [INFO] [stderr] 93 | fn assert<'s>(mut args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:114:16 [INFO] [stderr] | [INFO] [stderr] 114 | fn change_char<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:133:10 [INFO] [stderr] | [INFO] [stderr] 133 | fn if_eq<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:143:15 [INFO] [stderr] | [INFO] [stderr] 143 | fn if_eq_then<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:154:14 [INFO] [stderr] | [INFO] [stderr] 154 | fn end_paren<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:163:12 [INFO] [stderr] | [INFO] [stderr] 163 | fn literal<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:189:11 [INFO] [stderr] | [INFO] [stderr] 189 | fn define<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | file.read_to_string(&mut s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:248:11 [INFO] [stderr] | [INFO] [stderr] 248 | fn expand<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/base.rs:257:12 [INFO] [stderr] | [INFO] [stderr] 257 | fn rescope<'s>(args: Vec) -> EvalResult { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/expand.rs:181:12 [INFO] [stderr] | [INFO] [stderr] 181 | if self.calls.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.calls.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: length comparison to zero [INFO] [stderr] --> src/expand.rs:241:12 [INFO] [stderr] | [INFO] [stderr] 241 | if self.calls.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.calls.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:18 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:10 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:257:14 [INFO] [stderr] | [INFO] [stderr] 257 | fn parse<'f, 'r, 's : 'r>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:272:21 [INFO] [stderr] | [INFO] [stderr] 272 | / if ch.is_whitespace() { [INFO] [stderr] 273 | | return false; [INFO] [stderr] 274 | | } else { [INFO] [stderr] 275 | | return true; [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `return !ch.is_whitespace()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:281:25 [INFO] [stderr] | [INFO] [stderr] 281 | / if chr.is_alphabetic() || chr == '_' || chr.is_digit(10) { [INFO] [stderr] 282 | | false [INFO] [stderr] 283 | | } else { [INFO] [stderr] 284 | | true [INFO] [stderr] 285 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `!(chr.is_alphabetic() || chr == '_' || chr.is_digit(10))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:339:32 [INFO] [stderr] | [INFO] [stderr] 339 | } else if in_call { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 340 | | true [INFO] [stderr] 341 | | } else { [INFO] [stderr] 342 | | false [INFO] [stderr] 343 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `in_call` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/expand.rs:346:25 [INFO] [stderr] | [INFO] [stderr] 346 | / if chr == (scope.sigil) { [INFO] [stderr] 347 | | true [INFO] [stderr] 348 | | } else { [INFO] [stderr] 349 | | false [INFO] [stderr] 350 | | } [INFO] [stderr] | |_________________________^ help: you can reduce it to: `chr == (scope.sigil)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/expand.rs:379:25 [INFO] [stderr] | [INFO] [stderr] 379 | pub fn expand_with_pool<'f>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | file.read_to_string(&mut s); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.39s [INFO] running `"docker" "inspect" "76f70b71224d1d49b58519dc4e4e914033f9a3c976ef41b76cd72c3a76b0141a"` [INFO] running `"docker" "rm" "-f" "76f70b71224d1d49b58519dc4e4e914033f9a3c976ef41b76cd72c3a76b0141a"` [INFO] [stdout] 76f70b71224d1d49b58519dc4e4e914033f9a3c976ef41b76cd72c3a76b0141a