[INFO] updating cached repository mpdrescher/a-lisp-interpreter [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mpdrescher/a-lisp-interpreter [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mpdrescher/a-lisp-interpreter" "work/ex/clippy-test-run/sources/stable/gh/mpdrescher/a-lisp-interpreter"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mpdrescher/a-lisp-interpreter'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mpdrescher/a-lisp-interpreter" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/a-lisp-interpreter"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/a-lisp-interpreter'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d85d11620486df4420b2ea6fadcf120f3e9bbdd6 [INFO] sha for GitHub repo mpdrescher/a-lisp-interpreter: d85d11620486df4420b2ea6fadcf120f3e9bbdd6 [INFO] validating manifest of mpdrescher/a-lisp-interpreter 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 mpdrescher/a-lisp-interpreter 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 mpdrescher/a-lisp-interpreter [INFO] finished frobbing mpdrescher/a-lisp-interpreter [INFO] frobbed toml for mpdrescher/a-lisp-interpreter written to work/ex/clippy-test-run/sources/stable/gh/mpdrescher/a-lisp-interpreter/Cargo.toml [INFO] started frobbing mpdrescher/a-lisp-interpreter [INFO] finished frobbing mpdrescher/a-lisp-interpreter [INFO] frobbed toml for mpdrescher/a-lisp-interpreter written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/a-lisp-interpreter/Cargo.toml [INFO] crate mpdrescher/a-lisp-interpreter 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 mpdrescher/a-lisp-interpreter against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mpdrescher/a-lisp-interpreter:/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] ea976b6f6310b9bfab80af68b1f43af3761e906f2ad4c37fe9d431e99bd2cb45 [INFO] running `"docker" "start" "-a" "ea976b6f6310b9bfab80af68b1f43af3761e906f2ad4c37fe9d431e99bd2cb45"` [INFO] [stderr] Checking nix v0.5.1 [INFO] [stderr] Checking rustyline v1.0.0 [INFO] [stderr] Checking a-lisp-interpreter v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> lib/lambda.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | param_names: param_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_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] --> lib/lambda.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | body: body [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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] --> lib/list.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | cells: cells [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [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] --> lib/list.rs:201:13 [INFO] [stderr] | [INFO] [stderr] 201 | cells: cells [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [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] --> lib/stack.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | scopes: scopes [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `scopes` [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] --> lib/lambda.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | param_names: param_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `param_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] --> lib/lambda.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | body: body [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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] --> lib/list.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | cells: cells [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [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] --> lib/list.rs:201:13 [INFO] [stderr] | [INFO] [stderr] 201 | cells: cells [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [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] --> lib/stack.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | scopes: scopes [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `scopes` [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: unneeded return statement [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> lib/corelib/program.rs:268:20 [INFO] [stderr] | [INFO] [stderr] 268 | Ok(val) => return Ok(val), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(val)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> lib/corelib/program.rs:270:13 [INFO] [stderr] | [INFO] [stderr] 270 | return resolve(op_2, stack, "try"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `resolve(op_2, stack, "try")` [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] --> lib/functions.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | return Ok(()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] --> lib/corelib/program.rs:268:20 [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] 268 | Ok(val) => return Ok(val), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(val)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> lib/corelib/program.rs:270:13 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] 270 | return resolve(op_2, stack, "try"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `resolve(op_2, stack, "try")` [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] --> lib/functions.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | return Ok(()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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] --> lib/functions.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | return Ok(()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> lib/interpreter.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | pub const STD_LIST: [&'static str; 1] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> lib/functions.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | return Ok(()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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] warning: unneeded return statement [INFO] [stderr] [INFO] [stderr] --> lib/lambda.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return retval; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retval` [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] --> lib/list.rs:321:21 [INFO] [stderr] | [INFO] [stderr] 321 | return Ok(v); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(v)` [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] --> lib/list.rs:324:21 [INFO] [stderr] | [INFO] [stderr] 324 | return Err(err.add_trace(fn_name.to_owned())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err.add_trace(fn_name.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] --> lib/list.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | return Ok(Value::List(List::empty())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::List(List::empty()))` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> lib/interpreter.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | pub const STD_LIST: [&'static str; 1] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> lib/lambda.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | return retval; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `retval` [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] --> lib/value.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | return Ok(Value::Char(ch)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Char(ch))` [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] --> lib/value.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(Value::Char(string.chars().next().expect("empty string"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Char(string.chars().next().expect("empty string")))` [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] --> lib/list.rs:321:21 [INFO] [stderr] | [INFO] [stderr] 321 | return Ok(v); [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(v)` [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] --> lib/list.rs:324:21 [INFO] [stderr] | [INFO] [stderr] 324 | return Err(err.add_trace(fn_name.to_owned())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err.add_trace(fn_name.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] --> lib/list.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | return Ok(Value::List(List::empty())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::List(List::empty()))` [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] --> lib/value.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | return Ok(Value::Char(ch)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Char(ch))` [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] --> lib/value.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(Value::Char(string.chars().next().expect("empty string"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Value::Char(string.chars().next().expect("empty string")))` [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: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:17:16 [INFO] [stderr] | [INFO] [stderr] 17 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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] --> lib/corelib/listops.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:89:58 [INFO] [stderr] | [INFO] [stderr] 89 | return Err(Error::new_with_origin("nth", format!("index must be non-negative."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"index must be non-negative.".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:91:21 [INFO] [stderr] | [INFO] [stderr] 91 | else if list.cells().len() == 0 || index >= list.cells().len() as INT { //TODO: rethink this [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:157:72 [INFO] [stderr] | [INFO] [stderr] 157 | result.push(lambda.eval_with_trace(vec!(value), stack, format!("map"))?); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"map".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:178:70 [INFO] [stderr] | [INFO] [stderr] 178 | acc = lambda.eval_with_trace(vec!(acc, elem), stack, format!("fold"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"fold".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:194:16 [INFO] [stderr] | [INFO] [stderr] 194 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:199:102 [INFO] [stderr] | [INFO] [stderr] 199 | let current = lambda.eval_with_trace(vec!(acc.last().unwrap().clone(), elem), stack, format!("expand"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"expand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | for elem in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:219:77 [INFO] [stderr] | [INFO] [stderr] 219 | let elem_result = lambda.eval_with_trace(vec!(elem), stack, format!("any"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"any".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:245:16 [INFO] [stderr] | [INFO] [stderr] 245 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:249:25 [INFO] [stderr] | [INFO] [stderr] 249 | for elem in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:250:77 [INFO] [stderr] | [INFO] [stderr] 250 | let elem_result = lambda.eval_with_trace(vec!(elem), stack, format!("all"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"all".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:277:26 [INFO] [stderr] | [INFO] [stderr] 277 | for value in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:278:81 [INFO] [stderr] | [INFO] [stderr] 278 | let result = lambda.eval_with_trace(vec!(value.clone()), stack, format!("filter"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"filter".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in list.into_cells().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:304:25 [INFO] [stderr] | [INFO] [stderr] 304 | for elem in list.into_cells() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in cells_1.enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:391:27 [INFO] [stderr] | [INFO] [stderr] 391 | for elem_1 in cells_1 { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> lib/corelib/listops.rs:436:22 [INFO] [stderr] | [INFO] [stderr] 436 | .map(|x| Value::Integer(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Integer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> lib/corelib/math.rs:166:22 [INFO] [stderr] | [INFO] [stderr] 166 | for i in min..(max+1) { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `min..=max` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/corelib/program.rs:21:17 [INFO] [stderr] | [INFO] [stderr] 21 | / match param { [INFO] [stderr] 22 | | &Value::Symbol(ref param_str) => { [INFO] [stderr] 23 | | args.push(param_str.clone()); [INFO] [stderr] 24 | | }, [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 21 | match *param { [INFO] [stderr] 22 | Value::Symbol(ref param_str) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:26:69 [INFO] [stderr] | [INFO] [stderr] 26 | return Err(Error::new_with_origin("lambda", format!("only symbols can be used as function parameters."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"only symbols can be used as function parameters.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:64:40 [INFO] [stderr] | [INFO] [stderr] 64 | Err(Error::new_with_origin("cond", format!("no condition was true."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no condition was true.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | return Err(Error::new_with_origin("set", format!("no scope above the current one."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope above the current one.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:80:46 [INFO] [stderr] | [INFO] [stderr] 80 | return Err(err.add_trace(format!("set"))); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"set".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:99:61 [INFO] [stderr] | [INFO] [stderr] 99 | return Err(Error::new_with_origin("global", format!("no scope found."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> lib/corelib/program.rs:140:28 [INFO] [stderr] | [INFO] [stderr] 140 | if boolean == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!boolean` [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: the variable `thread_counter` is used as a loop counter. Consider using `for (thread_counter, item) in handles.enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/program.rs:178:17 [INFO] [stderr] | [INFO] [stderr] 178 | for elem in handles { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:209:67 [INFO] [stderr] | [INFO] [stderr] 209 | return Err(Error::new_with_origin("puts", format!("found non-chararacter element in string."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"found non-chararacter element in string.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:239:52 [INFO] [stderr] | [INFO] [stderr] 239 | return Err(Error::new_with_origin("throw", format!("argument can only be a string (a list that only contains characters)."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument can only be a string (a list that only contains characters).".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:295:39 [INFO] [stderr] | [INFO] [stderr] 295 | Err(err.add_trace(format!("try_rename"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"try_rename".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/corelib/program.rs:347:33 [INFO] [stderr] | [INFO] [stderr] 347 | current = format!("{}", args.get(i).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `args[i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/functions.rs:75:20 [INFO] [stderr] | [INFO] [stderr] 75 | let function = match list.cells().first().unwrap() { //unwrap, because eval checks for empty list [INFO] [stderr] | ____________________^ [INFO] [stderr] 76 | | &Value::Symbol(ref func) => func, [INFO] [stderr] 77 | | _ => { [INFO] [stderr] 78 | | return Ok(None); [INFO] [stderr] 79 | | } [INFO] [stderr] 80 | | }; [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 | let function = match *list.cells().first().unwrap() { //unwrap, because eval checks for empty list [INFO] [stderr] 76 | Value::Symbol(ref func) => func, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/functions.rs:152:12 [INFO] [stderr] | [INFO] [stderr] 152 | if type_str.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!type_str.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: you should consider adding a `Default` implementation for `interpreter::Interpreter` [INFO] [stderr] --> lib/interpreter.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Interpreter { [INFO] [stderr] 36 | | let mut interpreter = Interpreter::new_empty(); [INFO] [stderr] 37 | | match interpreter.load_std() { [INFO] [stderr] 38 | | Ok(_) => {}, [INFO] [stderr] ... | [INFO] [stderr] 44 | | interpreter [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 21 | impl Default for interpreter::Interpreter { [INFO] [stderr] 22 | fn default() -> Self { [INFO] [stderr] 23 | Self::new() [INFO] [stderr] 24 | } [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/interpreter.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | self.load_script(format!("{}", elem))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `elem.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/lambda.rs:88:43 [INFO] [stderr] | [INFO] [stderr] 88 | None => return Err(Error::new(format!("lambda definition: expected second '|'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"lambda definition: expected second '|'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/lambda.rs:95:37 [INFO] [stderr] | [INFO] [stderr] 95 | err = err.add_trace(format!("lambda definition")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"lambda definition".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> lib/list.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | / loop { [INFO] [stderr] 50 | | let ch = match code_iter.next() { [INFO] [stderr] 51 | | Some(v) => v, [INFO] [stderr] 52 | | None => break [INFO] [stderr] ... | [INFO] [stderr] 195 | | } [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(v) = code_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:55:20 [INFO] [stderr] | [INFO] [stderr] 55 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:65:55 [INFO] [stderr] | [INFO] [stderr] 65 | None => return Err(Error::new(format!("reached end of list code before closing bracket."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing bracket.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:106:20 [INFO] [stderr] | [INFO] [stderr] 106 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:115:55 [INFO] [stderr] | [INFO] [stderr] 115 | None => return Err(Error::new(format!("reached end of list code before closing '´'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing '´'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> lib/list.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | if (inner_buffer.starts_with("\\") && inner_buffer.len() > 2) || (!inner_buffer.starts_with("\\") && inner_buffer.len() > 1) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> lib/list.rs:118:109 [INFO] [stderr] | [INFO] [stderr] 118 | if (inner_buffer.starts_with("\\") && inner_buffer.len() > 2) || (!inner_buffer.starts_with("\\") && inner_buffer.len() > 1) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:119:43 [INFO] [stderr] | [INFO] [stderr] 119 | return Err(Error::new(format!("the character type can only contain one character."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"the character type can only contain one character.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:121:25 [INFO] [stderr] | [INFO] [stderr] 121 | else if inner_buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `inner_buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | return Err(Error::new(format!("a char can not be empty."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"a char can not be empty.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:127:20 [INFO] [stderr] | [INFO] [stderr] 127 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:146:55 [INFO] [stderr] | [INFO] [stderr] 146 | None => return Err(Error::new(format!("reached end of list code before closing '\"'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing '\"'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> lib/list.rs:148:21 [INFO] [stderr] | [INFO] [stderr] 148 | / match backslash { [INFO] [stderr] 149 | | true => { [INFO] [stderr] 150 | | backslash = false; [INFO] [stderr] 151 | | string.push(Value::char_from_string(&format!("\\{}", current)[..])?); [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 148 | if backslash { [INFO] [stderr] 149 | backslash = false; [INFO] [stderr] 150 | string.push(Value::char_from_string(&format!("\\{}", current)[..])?); [INFO] [stderr] 151 | } else { [INFO] [stderr] 152 | string.push(Value::char_from_string(&format!("{}", current)[..])?); [INFO] [stderr] 153 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:159:48 [INFO] [stderr] | [INFO] [stderr] 159 | inner_cells.push(Value::Symbol(format!("quote"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"quote".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:170:39 [INFO] [stderr] | [INFO] [stderr] 170 | return Err(Error::new(format!("closed bracket before opening it."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"closed bracket before opening it.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: length comparison to zero [INFO] [stderr] --> lib/list.rs:179:20 [INFO] [stderr] | [INFO] [stderr] 179 | if cells.len() == 0 && buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cells.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: length comparison to zero [INFO] [stderr] --> lib/list.rs:179:40 [INFO] [stderr] | [INFO] [stderr] 179 | if cells.len() == 0 && buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buffer.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 loop could be written as a `while let` loop [INFO] [stderr] --> lib/list.rs:181:21 [INFO] [stderr] | [INFO] [stderr] 181 | / loop { [INFO] [stderr] 182 | | match code_iter.next() { // consume iterator [INFO] [stderr] 183 | | Some(v) => inner_buffer.push(v), [INFO] [stderr] 184 | | None => break [INFO] [stderr] 185 | | } [INFO] [stderr] 186 | | } [INFO] [stderr] | |_____________________^ help: try: `while let Some(v) = code_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:197:12 [INFO] [stderr] | [INFO] [stderr] 197 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:260:51 [INFO] [stderr] | [INFO] [stderr] 260 | return Err(Error::new(format!("the lambda is not the only element of the list."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"the lambda is not the only element of the list.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/list.rs:283:41 [INFO] [stderr] | [INFO] [stderr] 283 | let param = resolve(self.cells.get(i).unwrap().clone(), stack, &name_str[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.cells[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scope::Scope` [INFO] [stderr] --> lib/scope.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Scope { [INFO] [stderr] 12 | | Scope { [INFO] [stderr] 13 | | vars: HashMap::new() [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/scope.rs:17:38 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn get_variable(&self, name: &String) -> Option<&Value> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/scope.rs:21:38 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn has_variable(&self, name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | / match self { [INFO] [stderr] 99 | | &Value::List(ref list) => { [INFO] [stderr] 100 | | let mut result = true; [INFO] [stderr] 101 | | for elem in list.cells() { [INFO] [stderr] ... | [INFO] [stderr] 111 | | _ => false [INFO] [stderr] 112 | | } [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] 98 | match *self { [INFO] [stderr] 99 | Value::List(ref list) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | / match elem { [INFO] [stderr] 103 | | &Value::Char(_) => {}, [INFO] [stderr] 104 | | _ => { [INFO] [stderr] 105 | | result = false; [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [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] 102 | match *elem { [INFO] [stderr] 103 | Value::Char(_) => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &Value::Nil => { [INFO] [stderr] 138 | | write!(f, "[nil]") [INFO] [stderr] 139 | | }, [INFO] [stderr] ... | [INFO] [stderr] 173 | | } [INFO] [stderr] 174 | | } [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] 136 | match *self { [INFO] [stderr] 137 | Value::Nil => { [INFO] [stderr] 138 | write!(f, "[nil]") [INFO] [stderr] 139 | }, [INFO] [stderr] 140 | Value::List(ref list) => { [INFO] [stderr] 141 | let count = list.cells().len(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/value.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | format!("{{}} [list]") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"{{}} [list]".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | / match self { [INFO] [stderr] 181 | | &Value::Nil => { [INFO] [stderr] 182 | | write!(f, "[nil]") [INFO] [stderr] 183 | | }, [INFO] [stderr] ... | [INFO] [stderr] 217 | | } [INFO] [stderr] 218 | | } [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] 180 | match *self { [INFO] [stderr] 181 | Value::Nil => { [INFO] [stderr] 182 | write!(f, "[nil]") [INFO] [stderr] 183 | }, [INFO] [stderr] 184 | Value::List(ref list) => { [INFO] [stderr] 185 | let count = list.cells().len(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/value.rs:187:21 [INFO] [stderr] | [INFO] [stderr] 187 | format!("{{}}") [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"{{}}".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/value.rs:222:23 [INFO] [stderr] | [INFO] [stderr] 222 | fn is_numeric(string: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you should consider deriving a `Default` implementation for `stack::Stack` [INFO] [stderr] --> lib/stack.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Stack { [INFO] [stderr] 12 | | Stack { [INFO] [stderr] 13 | | scopes: Vec::new() [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/stack.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn resolve_variable(&self, var: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:45:35 [INFO] [stderr] | [INFO] [stderr] 45 | return Err(Error::new(format!("tried to resolve variable on empty stack."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"tried to resolve variable on empty stack.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:49:25 [INFO] [stderr] | [INFO] [stderr] 49 | let scope = self.scopes.get(counter).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[counter]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:63:35 [INFO] [stderr] | [INFO] [stderr] 63 | return Err(Error::new(format!("tried to set variable on empty stack."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"tried to set variable on empty stack.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:67:25 [INFO] [stderr] | [INFO] [stderr] 67 | let scope = self.scopes.get_mut(counter).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[counter]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:78:35 [INFO] [stderr] | [INFO] [stderr] 78 | return Err(Error::new(format!("no scope above the current one."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope above the current one.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | self.scopes.get_mut(index).unwrap().set_variable(var, value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:17:16 [INFO] [stderr] | [INFO] [stderr] 17 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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] --> lib/corelib/listops.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | if list.cells().len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:89:58 [INFO] [stderr] | [INFO] [stderr] 89 | return Err(Error::new_with_origin("nth", format!("index must be non-negative."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"index must be non-negative.".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:91:21 [INFO] [stderr] | [INFO] [stderr] 91 | else if list.cells().len() == 0 || index >= list.cells().len() as INT { //TODO: rethink this [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:157:72 [INFO] [stderr] | [INFO] [stderr] 157 | result.push(lambda.eval_with_trace(vec!(value), stack, format!("map"))?); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"map".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:178:70 [INFO] [stderr] | [INFO] [stderr] 178 | acc = lambda.eval_with_trace(vec!(acc, elem), stack, format!("fold"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"fold".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:194:16 [INFO] [stderr] | [INFO] [stderr] 194 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:199:102 [INFO] [stderr] | [INFO] [stderr] 199 | let current = lambda.eval_with_trace(vec!(acc.last().unwrap().clone(), elem), stack, format!("expand"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"expand".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | for elem in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:219:77 [INFO] [stderr] | [INFO] [stderr] 219 | let elem_result = lambda.eval_with_trace(vec!(elem), stack, format!("any"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"any".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/corelib/listops.rs:245:16 [INFO] [stderr] | [INFO] [stderr] 245 | if list.cells().len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.cells().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: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:249:25 [INFO] [stderr] | [INFO] [stderr] 249 | for elem in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:250:77 [INFO] [stderr] | [INFO] [stderr] 250 | let elem_result = lambda.eval_with_trace(vec!(elem), stack, format!("all"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"all".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `index_counter` is used as a loop counter. Consider using `for (index_counter, item) in list.into_cells().into_iter().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:277:26 [INFO] [stderr] | [INFO] [stderr] 277 | for value in list.into_cells().into_iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/listops.rs:278:81 [INFO] [stderr] | [INFO] [stderr] 278 | let result = lambda.eval_with_trace(vec!(value.clone()), stack, format!("filter"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"filter".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in list.into_cells().enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:304:25 [INFO] [stderr] | [INFO] [stderr] 304 | for elem in list.into_cells() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in cells_1.enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/listops.rs:391:27 [INFO] [stderr] | [INFO] [stderr] 391 | for elem_1 in cells_1 { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> lib/corelib/listops.rs:436:22 [INFO] [stderr] | [INFO] [stderr] 436 | .map(|x| Value::Integer(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Integer` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> doctool/main.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | fn_name: fn_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `fn_name` [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] --> doctool/main.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | returns: returns, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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] --> doctool/main.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | description: description, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `description` [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] --> doctool/main.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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] --> doctool/main.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | throws: throws [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `throws` [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] --> doctool/main.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | fn_name: fn_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `fn_name` [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] --> doctool/main.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | returns: returns, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `returns` [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] --> doctool/main.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | description: description, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `description` [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] --> doctool/main.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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] --> doctool/main.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | throws: throws [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `throws` [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: an inclusive range would be more readable [INFO] [stderr] --> lib/corelib/math.rs:166:22 [INFO] [stderr] | [INFO] [stderr] 166 | for i in min..(max+1) { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `min..=max` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/corelib/program.rs:21:17 [INFO] [stderr] | [INFO] [stderr] 21 | / match param { [INFO] [stderr] 22 | | &Value::Symbol(ref param_str) => { [INFO] [stderr] 23 | | args.push(param_str.clone()); [INFO] [stderr] 24 | | }, [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 21 | match *param { [INFO] [stderr] 22 | Value::Symbol(ref param_str) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:26:69 [INFO] [stderr] | [INFO] [stderr] 26 | return Err(Error::new_with_origin("lambda", format!("only symbols can be used as function parameters."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"only symbols can be used as function parameters.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:64:40 [INFO] [stderr] | [INFO] [stderr] 64 | Err(Error::new_with_origin("cond", format!("no condition was true."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no condition was true.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | return Err(Error::new_with_origin("set", format!("no scope above the current one."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope above the current one.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:80:46 [INFO] [stderr] | [INFO] [stderr] 80 | return Err(err.add_trace(format!("set"))); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"set".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:99:61 [INFO] [stderr] | [INFO] [stderr] 99 | return Err(Error::new_with_origin("global", format!("no scope found."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope found.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> lib/corelib/program.rs:140:28 [INFO] [stderr] | [INFO] [stderr] 140 | if boolean == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!boolean` [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: the variable `thread_counter` is used as a loop counter. Consider using `for (thread_counter, item) in handles.enumerate()` or similar iterators [INFO] [stderr] --> lib/corelib/program.rs:178:17 [INFO] [stderr] | [INFO] [stderr] 178 | for elem in handles { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:209:67 [INFO] [stderr] | [INFO] [stderr] 209 | return Err(Error::new_with_origin("puts", format!("found non-chararacter element in string."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"found non-chararacter element in string.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:239:52 [INFO] [stderr] | [INFO] [stderr] 239 | return Err(Error::new_with_origin("throw", format!("argument can only be a string (a list that only contains characters)."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"argument can only be a string (a list that only contains characters).".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/corelib/program.rs:295:39 [INFO] [stderr] | [INFO] [stderr] 295 | Err(err.add_trace(format!("try_rename"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"try_rename".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/corelib/program.rs:347:33 [INFO] [stderr] | [INFO] [stderr] 347 | current = format!("{}", args.get(i).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `args[i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/functions.rs:75:20 [INFO] [stderr] | [INFO] [stderr] 75 | let function = match list.cells().first().unwrap() { //unwrap, because eval checks for empty list [INFO] [stderr] | ____________________^ [INFO] [stderr] 76 | | &Value::Symbol(ref func) => func, [INFO] [stderr] 77 | | _ => { [INFO] [stderr] 78 | | return Ok(None); [INFO] [stderr] 79 | | } [INFO] [stderr] 80 | | }; [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 | let function = match *list.cells().first().unwrap() { //unwrap, because eval checks for empty list [INFO] [stderr] 76 | Value::Symbol(ref func) => func, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/functions.rs:152:12 [INFO] [stderr] | [INFO] [stderr] 152 | if type_str.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!type_str.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: you should consider adding a `Default` implementation for `interpreter::Interpreter` [INFO] [stderr] --> lib/interpreter.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Interpreter { [INFO] [stderr] 36 | | let mut interpreter = Interpreter::new_empty(); [INFO] [stderr] 37 | | match interpreter.load_std() { [INFO] [stderr] 38 | | Ok(_) => {}, [INFO] [stderr] ... | [INFO] [stderr] 44 | | interpreter [INFO] [stderr] 45 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 21 | impl Default for interpreter::Interpreter { [INFO] [stderr] 22 | fn default() -> Self { [INFO] [stderr] 23 | Self::new() [INFO] [stderr] 24 | } [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/interpreter.rs:24:30 [INFO] [stderr] | [INFO] [stderr] 24 | self.load_script(format!("{}", elem))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `elem.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/lambda.rs:88:43 [INFO] [stderr] | [INFO] [stderr] 88 | None => return Err(Error::new(format!("lambda definition: expected second '|'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"lambda definition: expected second '|'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/lambda.rs:95:37 [INFO] [stderr] | [INFO] [stderr] 95 | err = err.add_trace(format!("lambda definition")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"lambda definition".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> lib/list.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | / loop { [INFO] [stderr] 50 | | let ch = match code_iter.next() { [INFO] [stderr] 51 | | Some(v) => v, [INFO] [stderr] 52 | | None => break [INFO] [stderr] ... | [INFO] [stderr] 195 | | } [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(v) = code_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:55:20 [INFO] [stderr] | [INFO] [stderr] 55 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:65:55 [INFO] [stderr] | [INFO] [stderr] 65 | None => return Err(Error::new(format!("reached end of list code before closing bracket."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing bracket.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:106:20 [INFO] [stderr] | [INFO] [stderr] 106 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:115:55 [INFO] [stderr] | [INFO] [stderr] 115 | None => return Err(Error::new(format!("reached end of list code before closing '´'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing '´'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> lib/list.rs:118:46 [INFO] [stderr] | [INFO] [stderr] 118 | if (inner_buffer.starts_with("\\") && inner_buffer.len() > 2) || (!inner_buffer.starts_with("\\") && inner_buffer.len() > 1) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> lib/list.rs:118:109 [INFO] [stderr] | [INFO] [stderr] 118 | if (inner_buffer.starts_with("\\") && inner_buffer.len() > 2) || (!inner_buffer.starts_with("\\") && inner_buffer.len() > 1) { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:119:43 [INFO] [stderr] | [INFO] [stderr] 119 | return Err(Error::new(format!("the character type can only contain one character."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"the character type can only contain one character.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:121:25 [INFO] [stderr] | [INFO] [stderr] 121 | else if inner_buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `inner_buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | return Err(Error::new(format!("a char can not be empty."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"a char can not be empty.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:127:20 [INFO] [stderr] | [INFO] [stderr] 127 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:146:55 [INFO] [stderr] | [INFO] [stderr] 146 | None => return Err(Error::new(format!("reached end of list code before closing '\"'."))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of list code before closing '\"'.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> lib/list.rs:148:21 [INFO] [stderr] | [INFO] [stderr] 148 | / match backslash { [INFO] [stderr] 149 | | true => { [INFO] [stderr] 150 | | backslash = false; [INFO] [stderr] 151 | | string.push(Value::char_from_string(&format!("\\{}", current)[..])?); [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 148 | if backslash { [INFO] [stderr] 149 | backslash = false; [INFO] [stderr] 150 | string.push(Value::char_from_string(&format!("\\{}", current)[..])?); [INFO] [stderr] 151 | } else { [INFO] [stderr] 152 | string.push(Value::char_from_string(&format!("{}", current)[..])?); [INFO] [stderr] 153 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:159:48 [INFO] [stderr] | [INFO] [stderr] 159 | inner_cells.push(Value::Symbol(format!("quote"))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"quote".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/list.rs:170:39 [INFO] [stderr] | [INFO] [stderr] 170 | return Err(Error::new(format!("closed bracket before opening it."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"closed bracket before opening it.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:173:20 [INFO] [stderr] | [INFO] [stderr] 173 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: length comparison to zero [INFO] [stderr] --> lib/list.rs:179:20 [INFO] [stderr] | [INFO] [stderr] 179 | if cells.len() == 0 && buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cells.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: length comparison to zero [INFO] [stderr] --> lib/list.rs:179:40 [INFO] [stderr] | [INFO] [stderr] 179 | if cells.len() == 0 && buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buffer.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 loop could be written as a `while let` loop [INFO] [stderr] --> lib/list.rs:181:21 [INFO] [stderr] | [INFO] [stderr] 181 | / loop { [INFO] [stderr] 182 | | match code_iter.next() { // consume iterator [INFO] [stderr] 183 | | Some(v) => inner_buffer.push(v), [INFO] [stderr] 184 | | None => break [INFO] [stderr] 185 | | } [INFO] [stderr] 186 | | } [INFO] [stderr] | |_____________________^ help: try: `while let Some(v) = code_iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> lib/list.rs:197:12 [INFO] [stderr] | [INFO] [stderr] 197 | if buffer.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!buffer.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: useless use of `format!` [INFO] [stderr] --> lib/list.rs:260:51 [INFO] [stderr] | [INFO] [stderr] 260 | return Err(Error::new(format!("the lambda is not the only element of the list."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"the lambda is not the only element of the list.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/list.rs:283:41 [INFO] [stderr] | [INFO] [stderr] 283 | let param = resolve(self.cells.get(i).unwrap().clone(), stack, &name_str[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.cells[i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `scope::Scope` [INFO] [stderr] --> lib/scope.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Scope { [INFO] [stderr] 12 | | Scope { [INFO] [stderr] 13 | | vars: HashMap::new() [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/scope.rs:17:38 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn get_variable(&self, name: &String) -> Option<&Value> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/scope.rs:21:38 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn has_variable(&self, name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | / match self { [INFO] [stderr] 99 | | &Value::List(ref list) => { [INFO] [stderr] 100 | | let mut result = true; [INFO] [stderr] 101 | | for elem in list.cells() { [INFO] [stderr] ... | [INFO] [stderr] 111 | | _ => false [INFO] [stderr] 112 | | } [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] 98 | match *self { [INFO] [stderr] 99 | Value::List(ref list) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:102:21 [INFO] [stderr] | [INFO] [stderr] 102 | / match elem { [INFO] [stderr] 103 | | &Value::Char(_) => {}, [INFO] [stderr] 104 | | _ => { [INFO] [stderr] 105 | | result = false; [INFO] [stderr] 106 | | } [INFO] [stderr] 107 | | } [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] 102 | match *elem { [INFO] [stderr] 103 | Value::Char(_) => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | / match self { [INFO] [stderr] 137 | | &Value::Nil => { [INFO] [stderr] 138 | | write!(f, "[nil]") [INFO] [stderr] 139 | | }, [INFO] [stderr] ... | [INFO] [stderr] 173 | | } [INFO] [stderr] 174 | | } [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] 136 | match *self { [INFO] [stderr] 137 | Value::Nil => { [INFO] [stderr] 138 | write!(f, "[nil]") [INFO] [stderr] 139 | }, [INFO] [stderr] 140 | Value::List(ref list) => { [INFO] [stderr] 141 | let count = list.cells().len(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/value.rs:143:21 [INFO] [stderr] | [INFO] [stderr] 143 | format!("{{}} [list]") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"{{}} [list]".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> lib/value.rs:180:9 [INFO] [stderr] | [INFO] [stderr] 180 | / match self { [INFO] [stderr] 181 | | &Value::Nil => { [INFO] [stderr] 182 | | write!(f, "[nil]") [INFO] [stderr] 183 | | }, [INFO] [stderr] ... | [INFO] [stderr] 217 | | } [INFO] [stderr] 218 | | } [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] 180 | match *self { [INFO] [stderr] 181 | Value::Nil => { [INFO] [stderr] 182 | write!(f, "[nil]") [INFO] [stderr] 183 | }, [INFO] [stderr] 184 | Value::List(ref list) => { [INFO] [stderr] 185 | let count = list.cells().len(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/value.rs:187:21 [INFO] [stderr] | [INFO] [stderr] 187 | format!("{{}}") [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"{{}}".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/value.rs:222:23 [INFO] [stderr] | [INFO] [stderr] 222 | fn is_numeric(string: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: you should consider deriving a `Default` implementation for `stack::Stack` [INFO] [stderr] --> lib/stack.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Stack { [INFO] [stderr] 12 | | Stack { [INFO] [stderr] 13 | | scopes: Vec::new() [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> lib/stack.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn resolve_variable(&self, var: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:45:35 [INFO] [stderr] | [INFO] [stderr] 45 | return Err(Error::new(format!("tried to resolve variable on empty stack."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"tried to resolve variable on empty stack.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:49:25 [INFO] [stderr] | [INFO] [stderr] 49 | let scope = self.scopes.get(counter).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[counter]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:63:35 [INFO] [stderr] | [INFO] [stderr] 63 | return Err(Error::new(format!("tried to set variable on empty stack."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"tried to set variable on empty stack.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:67:25 [INFO] [stderr] | [INFO] [stderr] 67 | let scope = self.scopes.get_mut(counter).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[counter]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> lib/stack.rs:78:35 [INFO] [stderr] | [INFO] [stderr] 78 | return Err(Error::new(format!("no scope above the current one."))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no scope above the current one.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> lib/stack.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | self.scopes.get_mut(index).unwrap().set_variable(var, value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.scopes[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | if args.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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: unneeded return statement [INFO] [stderr] --> doctool/main.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | return Ok(beautify(buffer)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(beautify(buffer))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:98:30 [INFO] [stderr] | [INFO] [stderr] 98 | fn unclosed_brackets(string: &String) -> isize { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> doctool/main.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | return Ok(beautify(buffer)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(beautify(buffer))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | if args.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:98:30 [INFO] [stderr] | [INFO] [stderr] 98 | fn unclosed_brackets(string: &String) -> isize { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> doctool/plainformat.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | print_header(format!("Summary")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Summary".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/plainformat.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match elem.description { [INFO] [stderr] 13 | | Some(desc) => { [INFO] [stderr] 14 | | println!("{}", desc); [INFO] [stderr] 15 | | println!(); [INFO] [stderr] 16 | | }, [INFO] [stderr] 17 | | None => {} [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | if let Some(desc) = elem.description { [INFO] [stderr] 13 | println!("{}", desc); [INFO] [stderr] 14 | println!(); [INFO] [stderr] 15 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/plainformat.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match elem.throws { [INFO] [stderr] 28 | | Some(throws) => { [INFO] [stderr] 29 | | println!("=> Throws"); [INFO] [stderr] 30 | | println!(); [INFO] [stderr] ... | [INFO] [stderr] 34 | | None => {} [INFO] [stderr] 35 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | if let Some(throws) = elem.throws { [INFO] [stderr] 28 | println!("=> Throws"); [INFO] [stderr] 29 | println!(); [INFO] [stderr] 30 | print_list(throws); [INFO] [stderr] 31 | println!(); [INFO] [stderr] 32 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/htmlformat.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / match elem.description { [INFO] [stderr] 21 | | Some(desc) => { [INFO] [stderr] 22 | | println!("
{}
", desc); [INFO] [stderr] 23 | | }, [INFO] [stderr] 24 | | None => {} [INFO] [stderr] 25 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 20 | if let Some(desc) = elem.description { [INFO] [stderr] 21 | println!("
{}
", desc); [INFO] [stderr] 22 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/htmlformat.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match elem.throws { [INFO] [stderr] 31 | | Some(throws) => { [INFO] [stderr] 32 | | println!("

Throws

"); [INFO] [stderr] 33 | | print_list(throws); [INFO] [stderr] 34 | | }, [INFO] [stderr] 35 | | None => {} [INFO] [stderr] 36 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 30 | if let Some(throws) = elem.throws { [INFO] [stderr] 31 | println!("

Throws

"); [INFO] [stderr] 32 | print_list(throws); [INFO] [stderr] 33 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> doctool/main.rs:12:8 [INFO] [stderr] | [INFO] [stderr] 12 | if args.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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 seem to be trying to match on a boolean expression [INFO] [stderr] --> doctool/main.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | / match htmlformatter { [INFO] [stderr] 40 | | true => htmlformat::print_units(units), [INFO] [stderr] 41 | | false => plainformat::print_units(units) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if htmlformatter { htmlformat::print_units(units) } else { plainformat::print_units(units) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/main.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | / match DocUnit::from_string(buffer)? { [INFO] [stderr] 66 | | Some(v) => result.push(v), [INFO] [stderr] 67 | | None => {} [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Some(v) = DocUnit::from_string(buffer)? { result.push(v) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> doctool/main.rs:128:35 [INFO] [stderr] | [INFO] [stderr] 128 | fn parse_doc_property(string: &String, prop_name: &'static str) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> doctool/main.rs:140:29 [INFO] [stderr] | [INFO] [stderr] 140 | if ch == ' ' && active == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!active` [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: single-character string constant used as pattern [INFO] [stderr] --> doctool/main.rs:160:42 [INFO] [stderr] | [INFO] [stderr] 160 | let split = string.clone().split(":").map(|x| x.to_owned()).collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> doctool/main.rs:164:19 [INFO] [stderr] | [INFO] [stderr] 164 | let val = split.get(0).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&split[0]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> doctool/main.rs:167:18 [INFO] [stderr] | [INFO] [stderr] 167 | 2 => split.get(1).unwrap().to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&split[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> doctool/plainformat.rs:5:18 [INFO] [stderr] | [INFO] [stderr] 5 | print_header(format!("Summary")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Summary".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/plainformat.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / match elem.description { [INFO] [stderr] 13 | | Some(desc) => { [INFO] [stderr] 14 | | println!("{}", desc); [INFO] [stderr] 15 | | println!(); [INFO] [stderr] 16 | | }, [INFO] [stderr] 17 | | None => {} [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | if let Some(desc) = elem.description { [INFO] [stderr] 13 | println!("{}", desc); [INFO] [stderr] 14 | println!(); [INFO] [stderr] 15 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/plainformat.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match elem.throws { [INFO] [stderr] 28 | | Some(throws) => { [INFO] [stderr] 29 | | println!("=> Throws"); [INFO] [stderr] 30 | | println!(); [INFO] [stderr] ... | [INFO] [stderr] 34 | | None => {} [INFO] [stderr] 35 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | if let Some(throws) = elem.throws { [INFO] [stderr] 28 | println!("=> Throws"); [INFO] [stderr] 29 | println!(); [INFO] [stderr] 30 | print_list(throws); [INFO] [stderr] 31 | println!(); [INFO] [stderr] 32 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/htmlformat.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / match elem.description { [INFO] [stderr] 21 | | Some(desc) => { [INFO] [stderr] 22 | | println!("
{}
", desc); [INFO] [stderr] 23 | | }, [INFO] [stderr] 24 | | None => {} [INFO] [stderr] 25 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 20 | if let Some(desc) = elem.description { [INFO] [stderr] 21 | println!("
{}
", desc); [INFO] [stderr] 22 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/htmlformat.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / match elem.throws { [INFO] [stderr] 31 | | Some(throws) => { [INFO] [stderr] 32 | | println!("

Throws

"); [INFO] [stderr] 33 | | print_list(throws); [INFO] [stderr] 34 | | }, [INFO] [stderr] 35 | | None => {} [INFO] [stderr] 36 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 30 | if let Some(throws) = elem.throws { [INFO] [stderr] 31 | println!("

Throws

"); [INFO] [stderr] 32 | print_list(throws); [INFO] [stderr] 33 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> doctool/main.rs:12:8 [INFO] [stderr] | [INFO] [stderr] 12 | if args.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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 seem to be trying to match on a boolean expression [INFO] [stderr] --> doctool/main.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | / match htmlformatter { [INFO] [stderr] 40 | | true => htmlformat::print_units(units), [INFO] [stderr] 41 | | false => plainformat::print_units(units) [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if htmlformatter { htmlformat::print_units(units) } else { plainformat::print_units(units) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> doctool/main.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | / match DocUnit::from_string(buffer)? { [INFO] [stderr] 66 | | Some(v) => result.push(v), [INFO] [stderr] 67 | | None => {} [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Some(v) = DocUnit::from_string(buffer)? { result.push(v) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> doctool/main.rs:128:35 [INFO] [stderr] | [INFO] [stderr] 128 | fn parse_doc_property(string: &String, prop_name: &'static str) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> doctool/main.rs:140:29 [INFO] [stderr] | [INFO] [stderr] 140 | if ch == ' ' && active == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!active` [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: single-character string constant used as pattern [INFO] [stderr] --> doctool/main.rs:160:42 [INFO] [stderr] | [INFO] [stderr] 160 | let split = string.clone().split(":").map(|x| x.to_owned()).collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> doctool/main.rs:164:19 [INFO] [stderr] | [INFO] [stderr] 164 | let val = split.get(0).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&split[0]` [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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> doctool/main.rs:167:18 [INFO] [stderr] | [INFO] [stderr] 167 | 2 => split.get(1).unwrap().to_owned(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&split[1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.41s [INFO] running `"docker" "inspect" "ea976b6f6310b9bfab80af68b1f43af3761e906f2ad4c37fe9d431e99bd2cb45"` [INFO] running `"docker" "rm" "-f" "ea976b6f6310b9bfab80af68b1f43af3761e906f2ad4c37fe9d431e99bd2cb45"` [INFO] [stdout] ea976b6f6310b9bfab80af68b1f43af3761e906f2ad4c37fe9d431e99bd2cb45