[INFO] fetching crate strings 0.1.1... [INFO] linting strings-0.1.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate strings 0.1.1 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate strings 0.1.1 [INFO] finished tweaking crates.io crate strings 0.1.1 [INFO] tweaked toml for crates.io crate strings 0.1.1 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate strings 0.1.1 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Locking 2 packages to latest compatible versions [INFO] [stderr] Adding log v0.3.9 (available: v0.4.29) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 95cac13517e41496642e0533ab63badcc3976a28a9ba9ebfcbcd0c12c8712796 [INFO] running `Command { std: "docker" "start" "-a" "95cac13517e41496642e0533ab63badcc3976a28a9ba9ebfcbcd0c12c8712796", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "95cac13517e41496642e0533ab63badcc3976a28a9ba9ebfcbcd0c12c8712796", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "95cac13517e41496642e0533ab63badcc3976a28a9ba9ebfcbcd0c12c8712796", kill_on_drop: false }` [INFO] [stdout] 95cac13517e41496642e0533ab63badcc3976a28a9ba9ebfcbcd0c12c8712796 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3eb7f2eb10c3f8d96ce68daf58a84268d7fc55f7d1614ffc218986338c522c58 [INFO] running `Command { std: "docker" "start" "-a" "3eb7f2eb10c3f8d96ce68daf58a84268d7fc55f7d1614ffc218986338c522c58", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking strings v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | try!(write!(fmt, "{}", node.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | try!(write!(f, "StringBuffer[{:?}", self.first.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | try!(write!(f, ", {:?}", next.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:240:17 [INFO] [stdout] | [INFO] [stdout] 240 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:259:17 [INFO] [stdout] | [INFO] [stdout] 259 | try!(write!(fmt, "|")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:265:17 [INFO] [stdout] | [INFO] [stdout] 265 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:315:17 [INFO] [stdout] | [INFO] [stdout] 315 | try!(write!(fmt, "(")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:321:17 [INFO] [stdout] | [INFO] [stdout] 321 | try!(write!(fmt, ", ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:317:21 [INFO] [stdout] | [INFO] [stdout] 317 | try!(write!(fmt, "left: {:?}", &**left)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:319:21 [INFO] [stdout] | [INFO] [stdout] 319 | try!(write!(fmt, "left: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:323:21 [INFO] [stdout] | [INFO] [stdout] 323 | try!(write!(fmt, "right: {:?}", &**right)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:325:21 [INFO] [stdout] | [INFO] [stdout] 325 | try!(write!(fmt, "right: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:374:13 [INFO] [stdout] | [INFO] [stdout] 374 | left: left, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:375:13 [INFO] [stdout] | [INFO] [stdout] 375 | right: right, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | weight: weight, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:382:13 [INFO] [stdout] | [INFO] [stdout] 382 | text: text, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | len: len, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:284:17 [INFO] [stdout] | [INFO] [stdout] 284 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:303:17 [INFO] [stdout] | [INFO] [stdout] 303 | try!(write!(fmt, "|")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:309:17 [INFO] [stdout] | [INFO] [stdout] 309 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:359:17 [INFO] [stdout] | [INFO] [stdout] 359 | try!(write!(fmt, "(")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:365:17 [INFO] [stdout] | [INFO] [stdout] 365 | try!(write!(fmt, ", ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:361:21 [INFO] [stdout] | [INFO] [stdout] 361 | try!(write!(fmt, "left: {:?}", &**left)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:363:21 [INFO] [stdout] | [INFO] [stdout] 363 | try!(write!(fmt, "left: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:367:21 [INFO] [stdout] | [INFO] [stdout] 367 | try!(write!(fmt, "right: {:?}", &**right)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | try!(write!(fmt, "{}", node.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:210:9 [INFO] [stdout] | [INFO] [stdout] 210 | try!(write!(f, "StringBuffer[{:?}", self.first.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/string_buffer.rs:214:13 [INFO] [stdout] | [INFO] [stdout] 214 | try!(write!(f, ", {:?}", next.data)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:369:21 [INFO] [stdout] | [INFO] [stdout] 369 | try!(write!(fmt, "right: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | left: left, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | right: right, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:425:13 [INFO] [stdout] | [INFO] [stdout] 425 | weight: weight, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:426:13 [INFO] [stdout] | [INFO] [stdout] 426 | src_weight: src_weight, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | text: text, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:433:13 [INFO] [stdout] | [INFO] [stdout] 433 | len: len, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:434:13 [INFO] [stdout] | [INFO] [stdout] 434 | src_offset: src_offset, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/ropes/src_rope.rs:1017:13 [INFO] [stdout] | [INFO] [stdout] 1017 | (src_loc as isize + self.src_offset) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1017 - (src_loc as isize + self.src_offset) [INFO] [stdout] 1017 + src_loc as isize + self.src_offset [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:240:17 [INFO] [stdout] | [INFO] [stdout] 240 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:259:17 [INFO] [stdout] | [INFO] [stdout] 259 | try!(write!(fmt, "|")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:265:17 [INFO] [stdout] | [INFO] [stdout] 265 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:315:17 [INFO] [stdout] | [INFO] [stdout] 315 | try!(write!(fmt, "(")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:321:17 [INFO] [stdout] | [INFO] [stdout] 321 | try!(write!(fmt, ", ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:317:21 [INFO] [stdout] | [INFO] [stdout] 317 | try!(write!(fmt, "left: {:?}", &**left)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:319:21 [INFO] [stdout] | [INFO] [stdout] 319 | try!(write!(fmt, "left: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:323:21 [INFO] [stdout] | [INFO] [stdout] 323 | try!(write!(fmt, "right: {:?}", &**right)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/rope.rs:325:21 [INFO] [stdout] | [INFO] [stdout] 325 | try!(write!(fmt, "right: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:374:13 [INFO] [stdout] | [INFO] [stdout] 374 | left: left, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:375:13 [INFO] [stdout] | [INFO] [stdout] 375 | right: right, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:376:13 [INFO] [stdout] | [INFO] [stdout] 376 | weight: weight, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:382:13 [INFO] [stdout] | [INFO] [stdout] 382 | text: text, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/rope.rs:383:13 [INFO] [stdout] | [INFO] [stdout] 383 | len: len, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:284:17 [INFO] [stdout] | [INFO] [stdout] 284 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:303:17 [INFO] [stdout] | [INFO] [stdout] 303 | try!(write!(fmt, "|")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:309:17 [INFO] [stdout] | [INFO] [stdout] 309 | try!(write!(fmt, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:359:17 [INFO] [stdout] | [INFO] [stdout] 359 | try!(write!(fmt, "(")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:365:17 [INFO] [stdout] | [INFO] [stdout] 365 | try!(write!(fmt, ", ")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:361:21 [INFO] [stdout] | [INFO] [stdout] 361 | try!(write!(fmt, "left: {:?}", &**left)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:363:21 [INFO] [stdout] | [INFO] [stdout] 363 | try!(write!(fmt, "left: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:367:21 [INFO] [stdout] | [INFO] [stdout] 367 | try!(write!(fmt, "right: {:?}", &**right)); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/ropes/src_rope.rs:369:21 [INFO] [stdout] | [INFO] [stdout] 369 | try!(write!(fmt, "right: ()")); [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | left: left, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:424:13 [INFO] [stdout] | [INFO] [stdout] 424 | right: right, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:425:13 [INFO] [stdout] | [INFO] [stdout] 425 | weight: weight, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:426:13 [INFO] [stdout] | [INFO] [stdout] 426 | src_weight: src_weight, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_weight` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:432:13 [INFO] [stdout] | [INFO] [stdout] 432 | text: text, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:433:13 [INFO] [stdout] | [INFO] [stdout] 433 | len: len, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `len` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ropes/src_rope.rs:434:13 [INFO] [stdout] | [INFO] [stdout] 434 | src_offset: src_offset, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `src_offset` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/ropes/src_rope.rs:1017:13 [INFO] [stdout] | [INFO] [stdout] 1017 | (src_loc as isize + self.src_offset) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1017 - (src_loc as isize + self.src_offset) [INFO] [stdout] 1017 + src_loc as isize + self.src_offset [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/string_buffer.rs:264:17 [INFO] [stdout] | [INFO] [stdout] 264 | let mut last = &mut *result.first; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `StringBuffer` [INFO] [stdout] --> src/string_buffer.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / pub fn new() -> StringBuffer { [INFO] [stdout] 52 | | StringBuffer::with_capacity(INIT_CAPACITY) [INFO] [stdout] 53 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 50 + impl Default for StringBuffer { [INFO] [stdout] 51 + fn default() -> Self { [INFO] [stdout] 52 + Self::new() [INFO] [stdout] 53 + } [INFO] [stdout] 54 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *mut _` detected [INFO] [stdout] --> src/string_buffer.rs:58:19 [INFO] [stdout] | [INFO] [stdout] 58 | last: 0 as *mut StringNode, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null_mut::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] = note: `#[warn(clippy::zero_ptr)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/string_buffer.rs:156:13 [INFO] [stdout] | [INFO] [stdout] 156 | &mut **next [INFO] [stdout] | ^^^^^^^^^^^ help: try: `next` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/string_buffer.rs:251:9 [INFO] [stdout] | [INFO] [stdout] 251 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 251 - return Some((result, byte)); [INFO] [stdout] 251 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *mut _` detected [INFO] [stdout] --> src/string_buffer.rs:259:19 [INFO] [stdout] | [INFO] [stdout] 259 | last: 0 as *mut StringNode, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null_mut::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | return UTF8_CHAR_WIDTH[b as usize] as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 24 - return UTF8_CHAR_WIDTH[b as usize] as usize; [INFO] [stdout] 24 + UTF8_CHAR_WIDTH[b as usize] as usize [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rope` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/ropes/macros.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Rope` [INFO] [stdout] --> src/ropes/rope.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / pub fn new() -> Rope { [INFO] [stdout] 62 | | Rope { [INFO] [stdout] 63 | | root: Node::empty_inner(), [INFO] [stdout] 64 | | len: 0, [INFO] [stdout] ... | [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 59 + impl Default for Rope { [INFO] [stdout] 60 + fn default() -> Self { [INFO] [stdout] 61 + Self::new() [INFO] [stdout] 62 + } [INFO] [stdout] 63 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/rope.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if text.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 171 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 171 - return Some((result, byte)); [INFO] [stdout] 171 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/rope.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 224 | if self.nodes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/string_buffer.rs:264:17 [INFO] [stdout] | [INFO] [stdout] 264 | let mut last = &mut *result.first; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/rope.rs:469:12 [INFO] [stdout] | [INFO] [stdout] 469 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 470 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 469 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 470 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 469 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 469 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 470 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 469 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:503:9 [INFO] [stdout] | [INFO] [stdout] 503 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 503 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 503 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/rope.rs:455:29 [INFO] [stdout] | [INFO] [stdout] 455 | let start = if start < self.weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 456 | | 0 [INFO] [stdout] 457 | | } else { [INFO] [stdout] 458 | | start - self.weight [INFO] [stdout] 459 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/rope.rs:557:25 [INFO] [stdout] | [INFO] [stdout] 557 | let start = if start < self.weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 558 | | 0 [INFO] [stdout] 559 | | } else { [INFO] [stdout] 560 | | start - self.weight [INFO] [stdout] 561 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:623:9 [INFO] [stdout] | [INFO] [stdout] 623 | return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 623 - return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] 623 + NodeAction::Change(Box::new(new_node), delta) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:651:9 [INFO] [stdout] | [INFO] [stdout] 651 | return NodeAction::Change(new_node, len as isize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 651 - return NodeAction::Change(new_node, len as isize) [INFO] [stdout] 651 + NodeAction::Change(new_node, len as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/rope.rs:669:31 [INFO] [stdout] | [INFO] [stdout] 669 | debug_assert!(start + new_str.bytes().len() <= self.len); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/rope.rs:673:69 [INFO] [stdout] | [INFO] [stdout] 673 | ::std::ptr::copy_nonoverlapping(new_str.as_ptr(), addr, new_str.bytes().len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rope` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/ropes/macros.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Rope` [INFO] [stdout] --> src/ropes/src_rope.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / pub fn new() -> Rope { [INFO] [stdout] 63 | | Rope { [INFO] [stdout] 64 | | root: Node::empty_inner(), [INFO] [stdout] 65 | | len: 0, [INFO] [stdout] ... | [INFO] [stdout] 69 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 60 + impl Default for Rope { [INFO] [stdout] 61 + fn default() -> Self { [INFO] [stdout] 62 + Self::new() [INFO] [stdout] 63 + } [INFO] [stdout] 64 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/src_rope.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 106 | if text.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:214:9 [INFO] [stdout] | [INFO] [stdout] 214 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 214 - return Some((result, byte)); [INFO] [stdout] 214 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/src_rope.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | if self.nodes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/src_rope.rs:594:12 [INFO] [stdout] | [INFO] [stdout] 594 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 595 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 594 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 595 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 594 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 594 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 595 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 594 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:628:9 [INFO] [stdout] | [INFO] [stdout] 628 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 628 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 628 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:575:29 [INFO] [stdout] | [INFO] [stdout] 575 | let start = if start < self.weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 576 | | 0 [INFO] [stdout] 577 | | } else { [INFO] [stdout] 578 | | start - self.weight [INFO] [stdout] 579 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:580:33 [INFO] [stdout] | [INFO] [stdout] 580 | let src_start = if src_start < self.src_weight { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 581 | | 0 [INFO] [stdout] 582 | | } else { [INFO] [stdout] 583 | | src_start - self.src_weight [INFO] [stdout] 584 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `src_start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/src_rope.rs:667:12 [INFO] [stdout] | [INFO] [stdout] 667 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 668 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 667 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 668 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 667 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 667 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 668 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 667 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:701:9 [INFO] [stdout] | [INFO] [stdout] 701 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 701 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 701 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:648:29 [INFO] [stdout] | [INFO] [stdout] 648 | let start = if start < self.src_weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 649 | | 0 [INFO] [stdout] 650 | | } else { [INFO] [stdout] 651 | | start - self.src_weight [INFO] [stdout] 652 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:653:33 [INFO] [stdout] | [INFO] [stdout] 653 | let src_start = if src_start < self.src_weight { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 654 | | 0 [INFO] [stdout] 655 | | } else { [INFO] [stdout] 656 | | src_start - self.src_weight [INFO] [stdout] 657 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `src_start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:801:25 [INFO] [stdout] | [INFO] [stdout] 801 | let start = if start < self.weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 802 | | 0 [INFO] [stdout] 803 | | } else { [INFO] [stdout] 804 | | start - self.weight [INFO] [stdout] 805 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.left` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:813:13 [INFO] [stdout] | [INFO] [stdout] 812 | if start < self.src_weight && self.left.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] 813 | self.left.as_ref().unwrap().find_src_slice(start, end, slice); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.right` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:821:13 [INFO] [stdout] | [INFO] [stdout] 815 | if end > self.src_weight && self.right.is_some() { [INFO] [stdout] | -------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 821 | self.right.as_ref().unwrap().find_src_slice(start, end - self.src_weight, slice) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:816:25 [INFO] [stdout] | [INFO] [stdout] 816 | let start = if start < self.src_weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 817 | | 0 [INFO] [stdout] 818 | | } else { [INFO] [stdout] 819 | | start - self.src_weight [INFO] [stdout] 820 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.left` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:863:22 [INFO] [stdout] | [INFO] [stdout] 862 | if self.left.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = &self.left` [INFO] [stdout] 863 | Some(self.left.as_ref().unwrap().col_for_src_loc(src_loc)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.right` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:872:23 [INFO] [stdout] | [INFO] [stdout] 871 | if self.right.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = &self.right` [INFO] [stdout] 872 | match self.right.as_ref().unwrap().col_for_src_loc(src_loc - self.src_weight) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `result` after checking its variant with `is_none` [INFO] [stdout] --> src/ropes/src_rope.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 870 | if result.is_none() { [INFO] [stdout] | ------------------- help: try: `if let Some() = result` [INFO] [stdout] ... [INFO] [stdout] 891 | result.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `StringBuffer` [INFO] [stdout] --> src/string_buffer.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | / pub fn new() -> StringBuffer { [INFO] [stdout] 52 | | StringBuffer::with_capacity(INIT_CAPACITY) [INFO] [stdout] 53 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 50 + impl Default for StringBuffer { [INFO] [stdout] 51 + fn default() -> Self { [INFO] [stdout] 52 + Self::new() [INFO] [stdout] 53 + } [INFO] [stdout] 54 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *mut _` detected [INFO] [stdout] --> src/string_buffer.rs:58:19 [INFO] [stdout] | [INFO] [stdout] 58 | last: 0 as *mut StringNode, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null_mut::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] = note: `#[warn(clippy::zero_ptr)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:897:9 [INFO] [stdout] | [INFO] [stdout] 897 | / match self.right { [INFO] [stdout] 898 | | Some(ref right) => match right.find_last_char(c) { [INFO] [stdout] 899 | | Some(x) => return Some(x), [INFO] [stdout] 900 | | None => {}, [INFO] [stdout] 901 | | }, [INFO] [stdout] 902 | | None => {} [INFO] [stdout] 903 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 897 ~ if let Some(ref right) = self.right { match right.find_last_char(c) { [INFO] [stdout] 898 + Some(x) => return Some(x), [INFO] [stdout] 899 + None => {}, [INFO] [stdout] 900 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:898:32 [INFO] [stdout] | [INFO] [stdout] 898 | Some(ref right) => match right.find_last_char(c) { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 899 | | Some(x) => return Some(x), [INFO] [stdout] 900 | | None => {}, [INFO] [stdout] 901 | | }, [INFO] [stdout] | |_____________^ help: try: `if let Some(x) = right.find_last_char(c) { return Some(x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:904:9 [INFO] [stdout] | [INFO] [stdout] 904 | / match self.left { [INFO] [stdout] 905 | | Some(ref left) => match left.find_last_char(c) { [INFO] [stdout] 906 | | Some(x) => return Some(x), [INFO] [stdout] 907 | | None => {}, [INFO] [stdout] 908 | | }, [INFO] [stdout] 909 | | None => {} [INFO] [stdout] 910 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 904 ~ if let Some(ref left) = self.left { match left.find_last_char(c) { [INFO] [stdout] 905 + Some(x) => return Some(x), [INFO] [stdout] 906 + None => {}, [INFO] [stdout] 907 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:905:31 [INFO] [stdout] | [INFO] [stdout] 905 | Some(ref left) => match left.find_last_char(c) { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 906 | | Some(x) => return Some(x), [INFO] [stdout] 907 | | None => {}, [INFO] [stdout] 908 | | }, [INFO] [stdout] | |_____________^ help: try: `if let Some(x) = left.find_last_char(c) { return Some(x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:950:9 [INFO] [stdout] | [INFO] [stdout] 950 | return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 950 - return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] 950 + NodeAction::Change(Box::new(new_node), delta) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/string_buffer.rs:156:13 [INFO] [stdout] | [INFO] [stdout] 156 | &mut **next [INFO] [stdout] | ^^^^^^^^^^^ help: try: `next` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:986:9 [INFO] [stdout] | [INFO] [stdout] 986 | return NodeAction::Change(new_node, len as isize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 986 - return NodeAction::Change(new_node, len as isize) [INFO] [stdout] 986 + NodeAction::Change(new_node, len as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/string_buffer.rs:251:9 [INFO] [stdout] | [INFO] [stdout] 251 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 251 - return Some((result, byte)); [INFO] [stdout] 251 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/src_rope.rs:1004:31 [INFO] [stdout] | [INFO] [stdout] 1004 | debug_assert!(start + new_str.bytes().len() <= self.len); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `0 as *mut _` detected [INFO] [stdout] --> src/string_buffer.rs:259:19 [INFO] [stdout] | [INFO] [stdout] 259 | last: 0 as *mut StringNode, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null_mut::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/src_rope.rs:1007:69 [INFO] [stdout] | [INFO] [stdout] 1007 | ::std::ptr::copy_nonoverlapping(new_str.as_ptr(), addr, new_str.bytes().len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:1053:9 [INFO] [stdout] | [INFO] [stdout] 1053 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1053 - return None [INFO] [stdout] 1053 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:68:26 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:87:26 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:68:26 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:87:26 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/src_rope.rs:150:22 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn src_slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 150 | pub fn src_slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | return UTF8_CHAR_WIDTH[b as usize] as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 24 - return UTF8_CHAR_WIDTH[b as usize] as usize; [INFO] [stdout] 24 + UTF8_CHAR_WIDTH[b as usize] as usize [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rope` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/ropes/macros.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: `#[warn(clippy::len_without_is_empty)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Rope` [INFO] [stdout] --> src/ropes/rope.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / pub fn new() -> Rope { [INFO] [stdout] 62 | | Rope { [INFO] [stdout] 63 | | root: Node::empty_inner(), [INFO] [stdout] 64 | | len: 0, [INFO] [stdout] ... | [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 59 + impl Default for Rope { [INFO] [stdout] 60 + fn default() -> Self { [INFO] [stdout] 61 + Self::new() [INFO] [stdout] 62 + } [INFO] [stdout] 63 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/rope.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if text.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 171 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 171 - return Some((result, byte)); [INFO] [stdout] 171 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/rope.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 224 | if self.nodes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/rope.rs:469:12 [INFO] [stdout] | [INFO] [stdout] 469 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 470 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 469 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 470 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 469 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 469 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 470 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 469 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:503:9 [INFO] [stdout] | [INFO] [stdout] 503 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 503 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 503 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/rope.rs:455:29 [INFO] [stdout] | [INFO] [stdout] 455 | let start = if start < self.weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 456 | | 0 [INFO] [stdout] 457 | | } else { [INFO] [stdout] 458 | | start - self.weight [INFO] [stdout] 459 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] = note: `#[warn(clippy::implicit_saturating_sub)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/rope.rs:557:25 [INFO] [stdout] | [INFO] [stdout] 557 | let start = if start < self.weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 558 | | 0 [INFO] [stdout] 559 | | } else { [INFO] [stdout] 560 | | start - self.weight [INFO] [stdout] 561 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:623:9 [INFO] [stdout] | [INFO] [stdout] 623 | return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 623 - return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] 623 + NodeAction::Change(Box::new(new_node), delta) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/rope.rs:651:9 [INFO] [stdout] | [INFO] [stdout] 651 | return NodeAction::Change(new_node, len as isize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 651 - return NodeAction::Change(new_node, len as isize) [INFO] [stdout] 651 + NodeAction::Change(new_node, len as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/rope.rs:669:31 [INFO] [stdout] | [INFO] [stdout] 669 | debug_assert!(start + new_str.bytes().len() <= self.len); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/rope.rs:673:69 [INFO] [stdout] | [INFO] [stdout] 673 | ::std::ptr::copy_nonoverlapping(new_str.as_ptr(), addr, new_str.bytes().len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rope` has a public `len` method, but no `is_empty` method [INFO] [stdout] --> src/ropes/macros.rs:6:13 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Rope` [INFO] [stdout] --> src/ropes/src_rope.rs:62:5 [INFO] [stdout] | [INFO] [stdout] 62 | / pub fn new() -> Rope { [INFO] [stdout] 63 | | Rope { [INFO] [stdout] 64 | | root: Node::empty_inner(), [INFO] [stdout] 65 | | len: 0, [INFO] [stdout] ... | [INFO] [stdout] 69 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 60 + impl Default for Rope { [INFO] [stdout] 61 + fn default() -> Self { [INFO] [stdout] 62 + Self::new() [INFO] [stdout] 63 + } [INFO] [stdout] 64 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/src_rope.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 106 | if text.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:214:9 [INFO] [stdout] | [INFO] [stdout] 214 | return Some((result, byte)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 214 - return Some((result, byte)); [INFO] [stdout] 214 + Some((result, byte)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/ropes/src_rope.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | if self.nodes.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/src_rope.rs:594:12 [INFO] [stdout] | [INFO] [stdout] 594 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 595 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 594 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 595 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 594 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 594 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 595 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 594 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:628:9 [INFO] [stdout] | [INFO] [stdout] 628 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 628 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 628 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:575:29 [INFO] [stdout] | [INFO] [stdout] 575 | let start = if start < self.weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 576 | | 0 [INFO] [stdout] 577 | | } else { [INFO] [stdout] 578 | | start - self.weight [INFO] [stdout] 579 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:580:33 [INFO] [stdout] | [INFO] [stdout] 580 | let src_start = if src_start < self.src_weight { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 581 | | 0 [INFO] [stdout] 582 | | } else { [INFO] [stdout] 583 | | src_start - self.src_weight [INFO] [stdout] 584 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `src_start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ropes/src_rope.rs:667:12 [INFO] [stdout] | [INFO] [stdout] 667 | if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] | ____________^ [INFO] [stdout] 668 | | left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] | |____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 667 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 668 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 667 + if !(left_action != NodeAction::Remove || right_action != NodeAction::Remove && self.right.is_some()) || [INFO] [stdout] | [INFO] [stdout] 667 - if left_action == NodeAction::Remove && right_action == NodeAction::Remove || [INFO] [stdout] 668 - left_action == NodeAction::Remove && self.right.is_none() || [INFO] [stdout] 667 + if (self.right.is_none() || right_action == NodeAction::Remove) && left_action == NodeAction::Remove || [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:701:9 [INFO] [stdout] | [INFO] [stdout] 701 | return NodeAction::Adjust(total_adj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 701 - return NodeAction::Adjust(total_adj); [INFO] [stdout] 701 + NodeAction::Adjust(total_adj) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:648:29 [INFO] [stdout] | [INFO] [stdout] 648 | let start = if start < self.src_weight { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 649 | | 0 [INFO] [stdout] 650 | | } else { [INFO] [stdout] 651 | | start - self.src_weight [INFO] [stdout] 652 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:653:33 [INFO] [stdout] | [INFO] [stdout] 653 | let src_start = if src_start < self.src_weight { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 654 | | 0 [INFO] [stdout] 655 | | } else { [INFO] [stdout] 656 | | src_start - self.src_weight [INFO] [stdout] 657 | | }; [INFO] [stdout] | |_________________^ help: replace it with: `src_start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:801:25 [INFO] [stdout] | [INFO] [stdout] 801 | let start = if start < self.weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 802 | | 0 [INFO] [stdout] 803 | | } else { [INFO] [stdout] 804 | | start - self.weight [INFO] [stdout] 805 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.left` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:813:13 [INFO] [stdout] | [INFO] [stdout] 812 | if start < self.src_weight && self.left.is_some() { [INFO] [stdout] | ------------------- the check is happening here [INFO] [stdout] 813 | self.left.as_ref().unwrap().find_src_slice(start, end, slice); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.right` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:821:13 [INFO] [stdout] | [INFO] [stdout] 815 | if end > self.src_weight && self.right.is_some() { [INFO] [stdout] | -------------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 821 | self.right.as_ref().unwrap().find_src_slice(start, end - self.src_weight, slice) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual arithmetic check found [INFO] [stdout] --> src/ropes/src_rope.rs:816:25 [INFO] [stdout] | [INFO] [stdout] 816 | let start = if start < self.src_weight { [INFO] [stdout] | _________________________^ [INFO] [stdout] 817 | | 0 [INFO] [stdout] 818 | | } else { [INFO] [stdout] 819 | | start - self.src_weight [INFO] [stdout] 820 | | }; [INFO] [stdout] | |_____________^ help: replace it with: `start.saturating_sub(self.src_weight)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_saturating_sub [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.left` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:863:22 [INFO] [stdout] | [INFO] [stdout] 862 | if self.left.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = &self.left` [INFO] [stdout] 863 | Some(self.left.as_ref().unwrap().col_for_src_loc(src_loc)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.right` after checking its variant with `is_some` [INFO] [stdout] --> src/ropes/src_rope.rs:872:23 [INFO] [stdout] | [INFO] [stdout] 871 | if self.right.is_some() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = &self.right` [INFO] [stdout] 872 | match self.right.as_ref().unwrap().col_for_src_loc(src_loc - self.src_weight) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `result` after checking its variant with `is_none` [INFO] [stdout] --> src/ropes/src_rope.rs:891:13 [INFO] [stdout] | [INFO] [stdout] 870 | if result.is_none() { [INFO] [stdout] | ------------------- help: try: `if let Some() = result` [INFO] [stdout] ... [INFO] [stdout] 891 | result.unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:897:9 [INFO] [stdout] | [INFO] [stdout] 897 | / match self.right { [INFO] [stdout] 898 | | Some(ref right) => match right.find_last_char(c) { [INFO] [stdout] 899 | | Some(x) => return Some(x), [INFO] [stdout] 900 | | None => {}, [INFO] [stdout] 901 | | }, [INFO] [stdout] 902 | | None => {} [INFO] [stdout] 903 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 897 ~ if let Some(ref right) = self.right { match right.find_last_char(c) { [INFO] [stdout] 898 + Some(x) => return Some(x), [INFO] [stdout] 899 + None => {}, [INFO] [stdout] 900 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:898:32 [INFO] [stdout] | [INFO] [stdout] 898 | Some(ref right) => match right.find_last_char(c) { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 899 | | Some(x) => return Some(x), [INFO] [stdout] 900 | | None => {}, [INFO] [stdout] 901 | | }, [INFO] [stdout] | |_____________^ help: try: `if let Some(x) = right.find_last_char(c) { return Some(x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:904:9 [INFO] [stdout] | [INFO] [stdout] 904 | / match self.left { [INFO] [stdout] 905 | | Some(ref left) => match left.find_last_char(c) { [INFO] [stdout] 906 | | Some(x) => return Some(x), [INFO] [stdout] 907 | | None => {}, [INFO] [stdout] 908 | | }, [INFO] [stdout] 909 | | None => {} [INFO] [stdout] 910 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 904 ~ if let Some(ref left) = self.left { match left.find_last_char(c) { [INFO] [stdout] 905 + Some(x) => return Some(x), [INFO] [stdout] 906 + None => {}, [INFO] [stdout] 907 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/ropes/src_rope.rs:905:31 [INFO] [stdout] | [INFO] [stdout] 905 | Some(ref left) => match left.find_last_char(c) { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 906 | | Some(x) => return Some(x), [INFO] [stdout] 907 | | None => {}, [INFO] [stdout] 908 | | }, [INFO] [stdout] | |_____________^ help: try: `if let Some(x) = left.find_last_char(c) { return Some(x) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:950:9 [INFO] [stdout] | [INFO] [stdout] 950 | return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 950 - return NodeAction::Change(Box::new(new_node), delta); [INFO] [stdout] 950 + NodeAction::Change(Box::new(new_node), delta) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:986:9 [INFO] [stdout] | [INFO] [stdout] 986 | return NodeAction::Change(new_node, len as isize) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 986 - return NodeAction::Change(new_node, len as isize) [INFO] [stdout] 986 + NodeAction::Change(new_node, len as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/src_rope.rs:1004:31 [INFO] [stdout] | [INFO] [stdout] 1004 | debug_assert!(start + new_str.bytes().len() <= self.len); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `bytes` [INFO] [stdout] --> src/ropes/src_rope.rs:1007:69 [INFO] [stdout] | [INFO] [stdout] 1007 | ::std::ptr::copy_nonoverlapping(new_str.as_ptr(), addr, new_str.bytes().len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `new_str.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ropes/src_rope.rs:1053:9 [INFO] [stdout] | [INFO] [stdout] 1053 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1053 - return None [INFO] [stdout] 1053 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `expected` [INFO] [stdout] --> src/ropes/src_rope.rs:1208:18 [INFO] [stdout] | [INFO] [stdout] 1208 | for i in 0..13 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1208 - for i in 0..13 { [INFO] [stdout] 1208 + for (i, ) in expected.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:68:26 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:87:26 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/rope.rs:57:1 [INFO] [stdout] | [INFO] [stdout] 57 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:68:26 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 68 | pub fn slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 83 | pub fn full_slice(&self) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/macros.rs:87:26 [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars { [INFO] [stdout] | ^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] ::: src/ropes/src_rope.rs:58:1 [INFO] [stdout] | [INFO] [stdout] 58 | impl_rope!(Rope); [INFO] [stdout] | ---------------- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: this warning originates in the macro `impl_rope` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 87 | pub fn chars(&self) -> RopeChars<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/ropes/src_rope.rs:150:22 [INFO] [stdout] | [INFO] [stdout] 150 | pub fn src_slice(&self, Range { start, end }: Range) -> RopeSlice { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 150 | pub fn src_slice(&self, Range { start, end }: Range) -> RopeSlice<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.82s [INFO] running `Command { std: "docker" "inspect" "3eb7f2eb10c3f8d96ce68daf58a84268d7fc55f7d1614ffc218986338c522c58", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3eb7f2eb10c3f8d96ce68daf58a84268d7fc55f7d1614ffc218986338c522c58", kill_on_drop: false }` [INFO] [stdout] 3eb7f2eb10c3f8d96ce68daf58a84268d7fc55f7d1614ffc218986338c522c58