[INFO] updating cached repository RustigeMan/fountain-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/RustigeMan/fountain-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/RustigeMan/fountain-rs" "work/ex/clippy-test-run/sources/stable/gh/RustigeMan/fountain-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/RustigeMan/fountain-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/RustigeMan/fountain-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/RustigeMan/fountain-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/RustigeMan/fountain-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 98092d3985b8cf2f179a440e3f7bd6fa520c4f73 [INFO] sha for GitHub repo RustigeMan/fountain-rs: 98092d3985b8cf2f179a440e3f7bd6fa520c4f73 [INFO] validating manifest of RustigeMan/fountain-rs 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 RustigeMan/fountain-rs 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 RustigeMan/fountain-rs [INFO] finished frobbing RustigeMan/fountain-rs [INFO] frobbed toml for RustigeMan/fountain-rs written to work/ex/clippy-test-run/sources/stable/gh/RustigeMan/fountain-rs/Cargo.toml [INFO] started frobbing RustigeMan/fountain-rs [INFO] finished frobbing RustigeMan/fountain-rs [INFO] frobbed toml for RustigeMan/fountain-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/RustigeMan/fountain-rs/Cargo.toml [INFO] crate RustigeMan/fountain-rs 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 RustigeMan/fountain-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/RustigeMan/fountain-rs:/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] 1abab34c21339d0e36f16aa17adb07852f81fc86238ccc7acd5947586bf658fe [INFO] running `"docker" "start" "-a" "1abab34c21339d0e36f16aa17adb07852f81fc86238ccc7acd5947586bf658fe"` [INFO] [stderr] Checking fountain v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | stype: stype, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stype` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | iter: iter, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | spans: spans, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `spans` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | index: index, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `index` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/internal_span.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | stype: stype, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `stype` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | iter: iter, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | spans: spans, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `spans` [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: this if statement can be collapsed [INFO] [stderr] --> src/parser.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | / if stars > 0 { [INFO] [stderr] 98 | | if emph_beg[stars - 1] == None { [INFO] [stderr] 99 | | let first_star_ind = chars[0].0; [INFO] [stderr] 100 | | emph_beg[stars - 1] = Some(first_star_ind); [INFO] [stderr] 101 | | } [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 97 | if stars > 0 && emph_beg[stars - 1] == None { [INFO] [stderr] 98 | let first_star_ind = chars[0].0; [INFO] [stderr] 99 | emph_beg[stars - 1] = Some(first_star_ind); [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:145:5 [INFO] [stderr] | [INFO] [stderr] 145 | return stars; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `stars` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | 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: this if statement can be collapsed [INFO] [stderr] --> src/parser.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | / if stars > 0 { [INFO] [stderr] 98 | | if emph_beg[stars - 1] == None { [INFO] [stderr] 99 | | let first_star_ind = chars[0].0; [INFO] [stderr] 100 | | emph_beg[stars - 1] = Some(first_star_ind); [INFO] [stderr] 101 | | } [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 97 | if stars > 0 && emph_beg[stars - 1] == None { [INFO] [stderr] 98 | let first_star_ind = chars[0].0; [INFO] [stderr] 99 | emph_beg[stars - 1] = Some(first_star_ind); [INFO] [stderr] 100 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:145:5 [INFO] [stderr] | [INFO] [stderr] 145 | return stars; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `stars` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | 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: the function has a cyclomatic complexity of 48 [INFO] [stderr] --> src/tests/mod.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / fn action_from_roman_string() { [INFO] [stderr] 15 | | let action_str = "Once upon a time in a land far, far away..."; [INFO] [stderr] 16 | | let doc = Doc::from_string(action_str.to_string()); [INFO] [stderr] 17 | | [INFO] [stderr] ... | [INFO] [stderr] 68 | | assert_eq!(positions.next(), None); [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/internal_span.rs:71:29 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn is_element(span: &&Self) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `&Self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/internal_span.rs:79:26 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_line(span: &&Self) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `&Self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match ch { [INFO] [stderr] 44 | | '\n' => { [INFO] [stderr] 45 | | int_spans.push(IntSpan::new_line(line_beg, i - line_beg)); [INFO] [stderr] 46 | | [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [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] 43 | if let '\n' = ch { [INFO] [stderr] 44 | int_spans.push(IntSpan::new_line(line_beg, i - line_beg)); [INFO] [stderr] 45 | [INFO] [stderr] 46 | //if line_beg == i { [INFO] [stderr] 47 | // blank_line_before = true; [INFO] [stderr] 48 | //} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `chars`. [INFO] [stderr] --> src/parser.rs:137:14 [INFO] [stderr] | [INFO] [stderr] 137 | for i in 0..chars.que_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 137 | for in chars.iter().take(chars.que_len()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `chars`. [INFO] [stderr] --> src/parser.rs:150:14 [INFO] [stderr] | [INFO] [stderr] 150 | for i in 0..chars.que_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 150 | for in chars.iter().take(chars.que_len()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:165:36 [INFO] [stderr] | [INFO] [stderr] 165 | fn parse_lines(chars: &str, spans: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[IntSpan]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/parser.rs:169:27 [INFO] [stderr] | [INFO] [stderr] 169 | let mut lines = spans.into_iter().filter(IntSpan::is_line).peekable(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:179:12 [INFO] [stderr] | [INFO] [stderr] 179 | if trimmed.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `trimmed.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:244:53 [INFO] [stderr] | [INFO] [stderr] 244 | None == line.find(char::is_lowercase) && if let Some(_) = line.find(char::is_uppercase) { [INFO] [stderr] | ______________________________________________- ^^^^^^^ [INFO] [stderr] 245 | | true [INFO] [stderr] 246 | | } else { [INFO] [stderr] 247 | | false [INFO] [stderr] 248 | | } [INFO] [stderr] | |_____- help: try this: `if line.find(char::is_uppercase).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/parser.rs:284:9 [INFO] [stderr] | [INFO] [stderr] 284 | / !line_is_parenthetical(trimmed) && trimmed != "" [INFO] [stderr] 285 | | || trimmed == "" && line_str.starts_with(" ") [INFO] [stderr] | |__________________________________________________________^ help: try: `!line_is_parenthetical(trimmed) && trimmed != "" || trimmed == "" && line_str.starts_with(" ")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `Doc` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | Doc { [INFO] [stderr] 23 | | /// Unaltered text content [INFO] [stderr] 24 | | text_content: String::new(), [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 14 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: trait `SpanLike` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stderr] --> src/lib.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | / pub trait SpanLike: Sized { [INFO] [stderr] 113 | | fn doc(&self) -> &Doc; [INFO] [stderr] 114 | | //fn doc_mut(&mut self) -> &mut Doc; [INFO] [stderr] 115 | | [INFO] [stderr] ... | [INFO] [stderr] 154 | | */ [INFO] [stderr] 155 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | self.clone() [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/internal_span.rs:71:29 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn is_element(span: &&Self) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `&Self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/internal_span.rs:79:26 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn is_line(span: &&Self) -> bool { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `&Self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match ch { [INFO] [stderr] 44 | | '\n' => { [INFO] [stderr] 45 | | int_spans.push(IntSpan::new_line(line_beg, i - line_beg)); [INFO] [stderr] 46 | | [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [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] 43 | if let '\n' = ch { [INFO] [stderr] 44 | int_spans.push(IntSpan::new_line(line_beg, i - line_beg)); [INFO] [stderr] 45 | [INFO] [stderr] 46 | //if line_beg == i { [INFO] [stderr] 47 | // blank_line_before = true; [INFO] [stderr] 48 | //} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `chars`. [INFO] [stderr] --> src/parser.rs:137:14 [INFO] [stderr] | [INFO] [stderr] 137 | for i in 0..chars.que_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 137 | for in chars.iter().take(chars.que_len()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `chars`. [INFO] [stderr] --> src/parser.rs:150:14 [INFO] [stderr] | [INFO] [stderr] 150 | for i in 0..chars.que_len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 150 | for in chars.iter().take(chars.que_len()) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:165:36 [INFO] [stderr] | [INFO] [stderr] 165 | fn parse_lines(chars: &str, spans: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[IntSpan]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/parser.rs:169:27 [INFO] [stderr] | [INFO] [stderr] 169 | let mut lines = spans.into_iter().filter(IntSpan::is_line).peekable(); [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:179:12 [INFO] [stderr] | [INFO] [stderr] 179 | if trimmed.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `trimmed.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:244:53 [INFO] [stderr] | [INFO] [stderr] 244 | None == line.find(char::is_lowercase) && if let Some(_) = line.find(char::is_uppercase) { [INFO] [stderr] | ______________________________________________- ^^^^^^^ [INFO] [stderr] 245 | | true [INFO] [stderr] 246 | | } else { [INFO] [stderr] 247 | | false [INFO] [stderr] 248 | | } [INFO] [stderr] | |_____- help: try this: `if line.find(char::is_uppercase).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/parser.rs:284:9 [INFO] [stderr] | [INFO] [stderr] 284 | / !line_is_parenthetical(trimmed) && trimmed != "" [INFO] [stderr] 285 | | || trimmed == "" && line_str.starts_with(" ") [INFO] [stderr] | |__________________________________________________________^ help: try: `!line_is_parenthetical(trimmed) && trimmed != "" || trimmed == "" && line_str.starts_with(" ")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `Doc` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn new() -> Self { [INFO] [stderr] 22 | | Doc { [INFO] [stderr] 23 | | /// Unaltered text content [INFO] [stderr] 24 | | text_content: String::new(), [INFO] [stderr] ... | [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [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] 14 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: trait `SpanLike` has a `len` method but no (possibly inherited) `is_empty` method [INFO] [stderr] --> src/lib.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | / pub trait SpanLike: Sized { [INFO] [stderr] 113 | | fn doc(&self) -> &Doc; [INFO] [stderr] 114 | | //fn doc_mut(&mut self) -> &mut Doc; [INFO] [stderr] 115 | | [INFO] [stderr] ... | [INFO] [stderr] 154 | | */ [INFO] [stderr] 155 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | self.clone() [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.60s [INFO] running `"docker" "inspect" "1abab34c21339d0e36f16aa17adb07852f81fc86238ccc7acd5947586bf658fe"` [INFO] running `"docker" "rm" "-f" "1abab34c21339d0e36f16aa17adb07852f81fc86238ccc7acd5947586bf658fe"` [INFO] [stdout] 1abab34c21339d0e36f16aa17adb07852f81fc86238ccc7acd5947586bf658fe