[INFO] cloning repository https://github.com/claudebarde/sumerian-conjugator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/claudebarde/sumerian-conjugator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudebarde%2Fsumerian-conjugator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudebarde%2Fsumerian-conjugator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cd1e70235dcb907cf89f09f80e5273a9a87692a9 [INFO] linting claudebarde/sumerian-conjugator against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fclaudebarde%2Fsumerian-conjugator" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/claudebarde/sumerian-conjugator [INFO] finished tweaking git repo https://github.com/claudebarde/sumerian-conjugator [INFO] tweaked toml for git repo https://github.com/claudebarde/sumerian-conjugator written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/claudebarde/sumerian-conjugator 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] crate git repo https://github.com/claudebarde/sumerian-conjugator already has a lockfile, it will not be regenerated [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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 82806805be7641e513ef56fedda3360617c273fda19460c5080027ee3c9618af [INFO] running `Command { std: "docker" "start" "-a" "82806805be7641e513ef56fedda3360617c273fda19460c5080027ee3c9618af", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "82806805be7641e513ef56fedda3360617c273fda19460c5080027ee3c9618af", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "82806805be7641e513ef56fedda3360617c273fda19460c5080027ee3c9618af", kill_on_drop: false }` [INFO] [stdout] 82806805be7641e513ef56fedda3360617c273fda19460c5080027ee3c9618af [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] ed2bd46e77ca4850c1cd621d490c82b6bc4d1b162b19708726abdb9ed421972a [INFO] running `Command { std: "docker" "start" "-a" "ed2bd46e77ca4850c1cd621d490c82b6bc4d1b162b19708726abdb9ed421972a", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.94 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.100 [INFO] [stderr] Compiling bumpalo v3.17.0 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Compiling wasm-bindgen v0.2.100 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.100 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.100 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.100 [INFO] [stderr] Checking sumerian-conjugator v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `VerbAspect`, `VerbForm`, and `find_verb` [INFO] [stdout] --> src/lib.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::lexicon::{find_verb, VerbAspect, VerbForm}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/lib.rs:658:41 [INFO] [stdout] | [INFO] [stdout] 658 | ... () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/lib.rs:707:25 [INFO] [stdout] | [INFO] [stdout] 707 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `VerbAspect`, `VerbForm`, and `find_verb` [INFO] [stdout] --> src/lib.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::lexicon::{find_verb, VerbAspect, VerbForm}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/lib.rs:658:41 [INFO] [stdout] | [INFO] [stdout] 658 | ... () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/lib.rs:707:25 [INFO] [stdout] | [INFO] [stdout] 707 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VerbAspect` is never constructed [INFO] [stdout] --> src/lexicon.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | pub struct VerbAspect<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VerbForm` is never constructed [INFO] [stdout] --> src/lexicon.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct VerbForm<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VERBFORMS` is never used [INFO] [stdout] --> src/lexicon.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const VERBFORMS: [VerbForm; 10] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `available_verb_stems` is never used [INFO] [stdout] --> src/lexicon.rs:163:8 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn available_verb_stems() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_verb` is never used [INFO] [stdout] --> src/lexicon.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 171 | pub fn find_verb(stem: &str) -> Result<&'static VerbForm<'static>, String> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `starts_with_consonant` is never used [INFO] [stdout] --> src/utils.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn starts_with_consonant(s: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:284:12 [INFO] [stdout] | [INFO] [stdout] 284 | if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [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] 284 - if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [INFO] [stdout] 284 + if !(self.is_transitive && self.is_perfective) { [INFO] [stdout] | [INFO] [stdout] 284 - if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [INFO] [stdout] 284 + if !self.is_transitive || !self.is_perfective { [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/lib.rs:350:9 [INFO] [stdout] | [INFO] [stdout] 350 | / match self.slot_13.clone() { [INFO] [stdout] 351 | | Some(marker) => { [INFO] [stdout] 352 | | if ends_with_vowel(&self.slot_12) { [INFO] [stdout] 353 | | final_verb.add_ed_marker("d".to_string()); [INFO] [stdout] ... | [INFO] [stdout] 358 | | None => (), [INFO] [stdout] 359 | | }; [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] 350 ~ if let Some(marker) = self.slot_13.clone() { [INFO] [stdout] 351 + if ends_with_vowel(&self.slot_12) { [INFO] [stdout] 352 + final_verb.add_ed_marker("d".to_string()); [INFO] [stdout] 353 + } else { [INFO] [stdout] 354 + final_verb.add_ed_marker(marker) [INFO] [stdout] 355 + } [INFO] [stdout] 356 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:362:62 [INFO] [stdout] | [INFO] [stdout] 362 | final_verb.add_final_ps_suffix(suffix.output(&self)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` 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/lib.rs:473:9 [INFO] [stdout] | [INFO] [stdout] 473 | / match self.clone().slot_11 { [INFO] [stdout] 474 | | Some(prefix) => { [INFO] [stdout] 475 | | let prefix_output = match prefix { [INFO] [stdout] 476 | | FinalPersonPrefix::SecondSingHuman => { [INFO] [stdout] ... | [INFO] [stdout] 497 | | None => (), [INFO] [stdout] 498 | | }; [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] 473 ~ if let Some(prefix) = self.clone().slot_11 { [INFO] [stdout] 474 + let prefix_output = match prefix { [INFO] [stdout] 475 + FinalPersonPrefix::SecondSingHuman => { [INFO] [stdout] 476 + // 13.2.4 The prefix {e} contracts with a preceding vowel, lengthening that vowel [INFO] [stdout] 477 + match final_verb.find_previous_morphem(10) { [INFO] [stdout] 478 + Some(morphem) => { [INFO] [stdout] 479 + if morphem.ends_with("a") { [INFO] [stdout] 480 + String::from("a") [INFO] [stdout] 481 + } else if morphem.ends_with("i") { [INFO] [stdout] 482 + String::from("i") [INFO] [stdout] 483 + } else if morphem.ends_with("u") { [INFO] [stdout] 484 + String::from("u") [INFO] [stdout] 485 + } else { [INFO] [stdout] 486 + prefix.output() [INFO] [stdout] 487 + } [INFO] [stdout] 488 + } [INFO] [stdout] 489 + None => prefix.output(), [INFO] [stdout] 490 + } [INFO] [stdout] 491 + } [INFO] [stdout] 492 + _ => prefix.output(), [INFO] [stdout] 493 + }; [INFO] [stdout] 494 + final_verb.add_final_ps_prefix(prefix_output); [INFO] [stdout] 495 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:522:25 [INFO] [stdout] | [INFO] [stdout] 522 | / match prefix { [INFO] [stdout] 523 | | IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 524 | | | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] 525 | | final_verb.add_ventive(String::from("m")); [INFO] [stdout] ... | [INFO] [stdout] 528 | | _ => (), [INFO] [stdout] 529 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/lib.rs:521:26 [INFO] [stdout] | [INFO] [stdout] 521 | Some(prefix) => { [INFO] [stdout] | ^^^^^^ replace this binding [INFO] [stdout] 522 | match prefix { [INFO] [stdout] 523 | / IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 524 | | | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] | |_____________________________________________________________________^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` 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/lib.rs:520:17 [INFO] [stdout] | [INFO] [stdout] 520 | / match self.slot_7.clone() { [INFO] [stdout] 521 | | Some(prefix) => { [INFO] [stdout] 522 | | match prefix { [INFO] [stdout] 523 | | IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] ... | [INFO] [stdout] 531 | | None => (), [INFO] [stdout] 532 | | } [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] 520 ~ if let Some(prefix) = self.slot_7.clone() { [INFO] [stdout] 521 + match prefix { [INFO] [stdout] 522 + IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 523 + | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] 524 + final_verb.add_ventive(String::from("m")); [INFO] [stdout] 525 + final_verb.add_indirect_object(String::from("ma")); [INFO] [stdout] 526 + } [INFO] [stdout] 527 + _ => (), [INFO] [stdout] 528 + }; [INFO] [stdout] 529 + } [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/lib.rs:540:17 [INFO] [stdout] | [INFO] [stdout] 540 | / match &self.slot_2 { [INFO] [stdout] 541 | | Some(Preformative::I) => { [INFO] [stdout] 542 | | final_verb.add_preformative_prefix("".to_string()); [INFO] [stdout] 543 | | final_verb.add_modal_prefix(Some("ḫē".to_string())); [INFO] [stdout] 544 | | } [INFO] [stdout] 545 | | _ => (), [INFO] [stdout] 546 | | } [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] 540 ~ if let Some(Preformative::I) = &self.slot_2 { [INFO] [stdout] 541 + final_verb.add_preformative_prefix("".to_string()); [INFO] [stdout] 542 ~ final_verb.add_modal_prefix(Some("ḫē".to_string())); [INFO] [stdout] 543 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:565:33 [INFO] [stdout] | [INFO] [stdout] 565 | / ... if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] 566 | | ... final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 567 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 564 ~ Some((morphem, morphem_name)) [INFO] [stdout] 565 ~ if morphem.starts_with("u") && morphem_name == MarkerName::Stem => { [INFO] [stdout] 566 | final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 567 ~ } [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/lib.rs:562:25 [INFO] [stdout] | [INFO] [stdout] 562 | / match final_verb.find_following_morphem(2) { [INFO] [stdout] 563 | | // looks for previous morphem, if any [INFO] [stdout] 564 | | Some((morphem, morphem_name)) => { [INFO] [stdout] 565 | | if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] ... | [INFO] [stdout] 569 | | None => (), [INFO] [stdout] 570 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 562 ~ if let Some((morphem, morphem_name)) = final_verb.find_following_morphem(2) { [INFO] [stdout] 563 + if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] 564 + final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 565 + } [INFO] [stdout] 566 + } [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/lib.rs:580:13 [INFO] [stdout] | [INFO] [stdout] 580 | / match final_verb.find_previous_morphem(12) { [INFO] [stdout] 581 | | Some(morphem) => { [INFO] [stdout] 582 | | match final_verb.find_final_ps_suffix() { [INFO] [stdout] 583 | | None => (), [INFO] [stdout] ... | [INFO] [stdout] 600 | | None => (), [INFO] [stdout] 601 | | } [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] 580 ~ if let Some(morphem) = final_verb.find_previous_morphem(12) { [INFO] [stdout] 581 + match final_verb.find_final_ps_suffix() { [INFO] [stdout] 582 + None => (), [INFO] [stdout] 583 + Some(suffix) => { [INFO] [stdout] 584 + // current suffix in the verbal form [INFO] [stdout] 585 + // FIXME: leaving "e" untouched for now [INFO] [stdout] 586 + if suffix.len() > 1 [INFO] [stdout] 587 + && (morphem.ends_with("a") [INFO] [stdout] 588 + || morphem.ends_with("i") [INFO] [stdout] 589 + || morphem.ends_with("u") [INFO] [stdout] 590 + || morphem.ends_with("e")) [INFO] [stdout] 591 + { [INFO] [stdout] 592 + let mut truncated_suffix = suffix; [INFO] [stdout] 593 + truncated_suffix.remove(0); [INFO] [stdout] 594 + final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 595 + } [INFO] [stdout] 596 + } [INFO] [stdout] 597 + } [INFO] [stdout] 598 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:587:29 [INFO] [stdout] | [INFO] [stdout] 587 | / ... if suffix.len() > 1 [INFO] [stdout] 588 | | ... && (morphem.ends_with("a") [INFO] [stdout] 589 | | ... || morphem.ends_with("i") [INFO] [stdout] 590 | | ... || morphem.ends_with("u") [INFO] [stdout] ... | [INFO] [stdout] 595 | | ... final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 596 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 584 ~ Some(suffix) [INFO] [stdout] 585 | // current suffix in the verbal form [INFO] [stdout] ... [INFO] [stdout] 591 | || morphem.ends_with("e")) [INFO] [stdout] 592 ~ => { [INFO] [stdout] 593 | let mut truncated_suffix = suffix; [INFO] [stdout] 594 | truncated_suffix.remove(0); [INFO] [stdout] 595 | final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 596 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/lib.rs:595:64 [INFO] [stdout] | [INFO] [stdout] 595 | ... final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `truncated_suffix.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` 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/lib.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | ... None => match self.slot_10.clone() { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 635 | | ... Some(_) => { [INFO] [stdout] 636 | | ... // has a locative marker [INFO] [stdout] 637 | | ... todo!("remove initial person prefix with locative marker and ventive") [INFO] [stdout] 638 | | ... } [INFO] [stdout] 639 | | ... None => (), [INFO] [stdout] 640 | | ... }, [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] 634 ~ None => if let Some(_) = self.slot_10.clone() { [INFO] [stdout] 635 + // has a locative marker [INFO] [stdout] 636 + todo!("remove initial person prefix with locative marker and ventive") [INFO] [stdout] 637 ~ }, [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/lib.rs:649:29 [INFO] [stdout] | [INFO] [stdout] 649 | / ... match final_verb.find_previous_morphem(5) { [INFO] [stdout] 650 | | ... Some(morphem) => { [INFO] [stdout] 651 | | ... if morphem.ends_with("a") { [INFO] [stdout] 652 | | ... final_verb.add_initial_person_prefix(String::from("a")) [INFO] [stdout] ... | [INFO] [stdout] 661 | | ... None => (), [INFO] [stdout] 662 | | ... } [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] 649 ~ if let Some(morphem) = final_verb.find_previous_morphem(5) { [INFO] [stdout] 650 + if morphem.ends_with("a") { [INFO] [stdout] 651 + final_verb.add_initial_person_prefix(String::from("a")) [INFO] [stdout] 652 + } else if morphem.ends_with("i") { [INFO] [stdout] 653 + final_verb.add_initial_person_prefix(String::from("i")) [INFO] [stdout] 654 + } else if morphem.ends_with("u") { [INFO] [stdout] 655 + final_verb.add_initial_person_prefix(String::from("u")) [INFO] [stdout] 656 + } else { [INFO] [stdout] 657 + () [INFO] [stdout] 658 + } [INFO] [stdout] 659 + } [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/lib.rs:698:13 [INFO] [stdout] | [INFO] [stdout] 698 | / match final_verb.find_following_morphem(MarkerName::Ventive.position() + 1) { [INFO] [stdout] 699 | | Some((morphem, marker_name)) => { [INFO] [stdout] 700 | | if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] 701 | | final_verb.add_ventive(String::from("mi")); [INFO] [stdout] ... | [INFO] [stdout] 710 | | None => (), [INFO] [stdout] 711 | | } [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] 698 ~ if let Some((morphem, marker_name)) = final_verb.find_following_morphem(MarkerName::Ventive.position() + 1) { [INFO] [stdout] 699 + if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] 700 + final_verb.add_ventive(String::from("mi")); [INFO] [stdout] 701 + } else if morphem == String::from("ra") [INFO] [stdout] 702 + && marker_name == MarkerName::DativePrefix [INFO] [stdout] 703 + { [INFO] [stdout] 704 + final_verb.add_ventive(String::from("ma")); [INFO] [stdout] 705 + } else { [INFO] [stdout] 706 + () [INFO] [stdout] 707 + } [INFO] [stdout] 708 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/lib.rs:700:35 [INFO] [stdout] | [INFO] [stdout] 700 | if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `"ni"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/lib.rs:702:42 [INFO] [stdout] | [INFO] [stdout] 702 | } else if morphem == String::from("ra") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `"ra"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/lib.rs:783:5 [INFO] [stdout] | [INFO] [stdout] 783 | fn name_by_position(position: usize) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `self` [INFO] [stdout] --> src/lib.rs:849:18 [INFO] [stdout] | [INFO] [stdout] 849 | for i in starting_slot..self.len() { [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] 849 - for i in starting_slot..self.len() { [INFO] [stdout] 849 + for (i, ) in self.iter().enumerate().skip(starting_slot) { [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/lib.rs:851:17 [INFO] [stdout] | [INFO] [stdout] 851 | / match Self::name_by_position(i) { [INFO] [stdout] 852 | | Ok(name) => return Some((self[i].clone(), name)), [INFO] [stdout] 853 | | Err(_) => (), [INFO] [stdout] 854 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(name) = Self::name_by_position(i) { return Some((self[i].clone(), name)) }` [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: the loop variable `i` is only used to index `self` [INFO] [stdout] --> src/lib.rs:860:18 [INFO] [stdout] | [INFO] [stdout] 860 | for i in 0..self.len() { [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] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 860 - for i in 0..self.len() { [INFO] [stdout] 860 + for in &self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:872:9 [INFO] [stdout] | [INFO] [stdout] 872 | return Some(suffix); [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] 872 - return Some(suffix); [INFO] [stdout] 872 + Some(suffix) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/lib.rs:896:9 [INFO] [stdout] | [INFO] [stdout] 896 | format!("{}", self.join("")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `self.join("").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:986:21 [INFO] [stdout] | [INFO] [stdout] 986 | return "e".to_string(); [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 "e".to_string(); [INFO] [stdout] 986 + "e".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:988:21 [INFO] [stdout] | [INFO] [stdout] 988 | return "".to_string(); [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] 988 - return "".to_string(); [INFO] [stdout] 988 + "".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:996:17 [INFO] [stdout] | [INFO] [stdout] 996 | return "eš".to_string(); [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] 996 - return "eš".to_string(); [INFO] [stdout] 996 + "eš".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:999:17 [INFO] [stdout] | [INFO] [stdout] 999 | return "".to_string(); // 15.3.3 [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] 999 - return "".to_string(); // 15.3.3 [INFO] [stdout] 999 + "".to_string()// 15.3.3 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VerbAspect` is never constructed [INFO] [stdout] --> src/lexicon.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | pub struct VerbAspect<'a> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VerbForm` is never constructed [INFO] [stdout] --> src/lexicon.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct VerbForm<'a> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VERBFORMS` is never used [INFO] [stdout] --> src/lexicon.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const VERBFORMS: [VerbForm; 10] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `available_verb_stems` is never used [INFO] [stdout] --> src/lexicon.rs:163:8 [INFO] [stdout] | [INFO] [stdout] 163 | pub fn available_verb_stems() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_verb` is never used [INFO] [stdout] --> src/lexicon.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 171 | pub fn find_verb(stem: &str) -> Result<&'static VerbForm<'static>, String> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `starts_with_consonant` is never used [INFO] [stdout] --> src/utils.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn starts_with_consonant(s: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tests.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | / mod tests { [INFO] [stdout] 3 | | use crate::*; [INFO] [stdout] 4 | | [INFO] [stdout] 5 | | #[test] [INFO] [stdout] ... | [INFO] [stdout] 783 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:284:12 [INFO] [stdout] | [INFO] [stdout] 284 | if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [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] 284 - if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [INFO] [stdout] 284 + if !(self.is_transitive && self.is_perfective) { [INFO] [stdout] | [INFO] [stdout] 284 - if !self.is_transitive || (self.is_transitive && !self.is_perfective) { [INFO] [stdout] 284 + if !self.is_transitive || !self.is_perfective { [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/lib.rs:350:9 [INFO] [stdout] | [INFO] [stdout] 350 | / match self.slot_13.clone() { [INFO] [stdout] 351 | | Some(marker) => { [INFO] [stdout] 352 | | if ends_with_vowel(&self.slot_12) { [INFO] [stdout] 353 | | final_verb.add_ed_marker("d".to_string()); [INFO] [stdout] ... | [INFO] [stdout] 358 | | None => (), [INFO] [stdout] 359 | | }; [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] 350 ~ if let Some(marker) = self.slot_13.clone() { [INFO] [stdout] 351 + if ends_with_vowel(&self.slot_12) { [INFO] [stdout] 352 + final_verb.add_ed_marker("d".to_string()); [INFO] [stdout] 353 + } else { [INFO] [stdout] 354 + final_verb.add_ed_marker(marker) [INFO] [stdout] 355 + } [INFO] [stdout] 356 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:362:62 [INFO] [stdout] | [INFO] [stdout] 362 | final_verb.add_final_ps_suffix(suffix.output(&self)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` 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/lib.rs:473:9 [INFO] [stdout] | [INFO] [stdout] 473 | / match self.clone().slot_11 { [INFO] [stdout] 474 | | Some(prefix) => { [INFO] [stdout] 475 | | let prefix_output = match prefix { [INFO] [stdout] 476 | | FinalPersonPrefix::SecondSingHuman => { [INFO] [stdout] ... | [INFO] [stdout] 497 | | None => (), [INFO] [stdout] 498 | | }; [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] 473 ~ if let Some(prefix) = self.clone().slot_11 { [INFO] [stdout] 474 + let prefix_output = match prefix { [INFO] [stdout] 475 + FinalPersonPrefix::SecondSingHuman => { [INFO] [stdout] 476 + // 13.2.4 The prefix {e} contracts with a preceding vowel, lengthening that vowel [INFO] [stdout] 477 + match final_verb.find_previous_morphem(10) { [INFO] [stdout] 478 + Some(morphem) => { [INFO] [stdout] 479 + if morphem.ends_with("a") { [INFO] [stdout] 480 + String::from("a") [INFO] [stdout] 481 + } else if morphem.ends_with("i") { [INFO] [stdout] 482 + String::from("i") [INFO] [stdout] 483 + } else if morphem.ends_with("u") { [INFO] [stdout] 484 + String::from("u") [INFO] [stdout] 485 + } else { [INFO] [stdout] 486 + prefix.output() [INFO] [stdout] 487 + } [INFO] [stdout] 488 + } [INFO] [stdout] 489 + None => prefix.output(), [INFO] [stdout] 490 + } [INFO] [stdout] 491 + } [INFO] [stdout] 492 + _ => prefix.output(), [INFO] [stdout] 493 + }; [INFO] [stdout] 494 + final_verb.add_final_ps_prefix(prefix_output); [INFO] [stdout] 495 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:522:25 [INFO] [stdout] | [INFO] [stdout] 522 | / match prefix { [INFO] [stdout] 523 | | IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 524 | | | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] 525 | | final_verb.add_ventive(String::from("m")); [INFO] [stdout] ... | [INFO] [stdout] 528 | | _ => (), [INFO] [stdout] 529 | | }; [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/lib.rs:521:26 [INFO] [stdout] | [INFO] [stdout] 521 | Some(prefix) => { [INFO] [stdout] | ^^^^^^ replace this binding [INFO] [stdout] 522 | match prefix { [INFO] [stdout] 523 | / IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 524 | | | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] | |_____________________________________________________________________^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` 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/lib.rs:520:17 [INFO] [stdout] | [INFO] [stdout] 520 | / match self.slot_7.clone() { [INFO] [stdout] 521 | | Some(prefix) => { [INFO] [stdout] 522 | | match prefix { [INFO] [stdout] 523 | | IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] ... | [INFO] [stdout] 531 | | None => (), [INFO] [stdout] 532 | | } [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] 520 ~ if let Some(prefix) = self.slot_7.clone() { [INFO] [stdout] 521 + match prefix { [INFO] [stdout] 522 + IndirectObjectPrefix::ThirdSingNonHuman [INFO] [stdout] 523 + | IndirectObjectPrefix::ThirdPlurNonHuman => { [INFO] [stdout] 524 + final_verb.add_ventive(String::from("m")); [INFO] [stdout] 525 + final_verb.add_indirect_object(String::from("ma")); [INFO] [stdout] 526 + } [INFO] [stdout] 527 + _ => (), [INFO] [stdout] 528 + }; [INFO] [stdout] 529 + } [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/lib.rs:540:17 [INFO] [stdout] | [INFO] [stdout] 540 | / match &self.slot_2 { [INFO] [stdout] 541 | | Some(Preformative::I) => { [INFO] [stdout] 542 | | final_verb.add_preformative_prefix("".to_string()); [INFO] [stdout] 543 | | final_verb.add_modal_prefix(Some("ḫē".to_string())); [INFO] [stdout] 544 | | } [INFO] [stdout] 545 | | _ => (), [INFO] [stdout] 546 | | } [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] 540 ~ if let Some(Preformative::I) = &self.slot_2 { [INFO] [stdout] 541 + final_verb.add_preformative_prefix("".to_string()); [INFO] [stdout] 542 ~ final_verb.add_modal_prefix(Some("ḫē".to_string())); [INFO] [stdout] 543 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:565:33 [INFO] [stdout] | [INFO] [stdout] 565 | / ... if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] 566 | | ... final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 567 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 564 ~ Some((morphem, morphem_name)) [INFO] [stdout] 565 ~ if morphem.starts_with("u") && morphem_name == MarkerName::Stem => { [INFO] [stdout] 566 | final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 567 ~ } [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/lib.rs:562:25 [INFO] [stdout] | [INFO] [stdout] 562 | / match final_verb.find_following_morphem(2) { [INFO] [stdout] 563 | | // looks for previous morphem, if any [INFO] [stdout] 564 | | Some((morphem, morphem_name)) => { [INFO] [stdout] 565 | | if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] ... | [INFO] [stdout] 569 | | None => (), [INFO] [stdout] 570 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 562 ~ if let Some((morphem, morphem_name)) = final_verb.find_following_morphem(2) { [INFO] [stdout] 563 + if morphem.starts_with("u") && morphem_name == MarkerName::Stem { [INFO] [stdout] 564 + final_verb.add_preformative_prefix("u".to_string()); [INFO] [stdout] 565 + } [INFO] [stdout] 566 + } [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/lib.rs:580:13 [INFO] [stdout] | [INFO] [stdout] 580 | / match final_verb.find_previous_morphem(12) { [INFO] [stdout] 581 | | Some(morphem) => { [INFO] [stdout] 582 | | match final_verb.find_final_ps_suffix() { [INFO] [stdout] 583 | | None => (), [INFO] [stdout] ... | [INFO] [stdout] 600 | | None => (), [INFO] [stdout] 601 | | } [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] 580 ~ if let Some(morphem) = final_verb.find_previous_morphem(12) { [INFO] [stdout] 581 + match final_verb.find_final_ps_suffix() { [INFO] [stdout] 582 + None => (), [INFO] [stdout] 583 + Some(suffix) => { [INFO] [stdout] 584 + // current suffix in the verbal form [INFO] [stdout] 585 + // FIXME: leaving "e" untouched for now [INFO] [stdout] 586 + if suffix.len() > 1 [INFO] [stdout] 587 + && (morphem.ends_with("a") [INFO] [stdout] 588 + || morphem.ends_with("i") [INFO] [stdout] 589 + || morphem.ends_with("u") [INFO] [stdout] 590 + || morphem.ends_with("e")) [INFO] [stdout] 591 + { [INFO] [stdout] 592 + let mut truncated_suffix = suffix; [INFO] [stdout] 593 + truncated_suffix.remove(0); [INFO] [stdout] 594 + final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 595 + } [INFO] [stdout] 596 + } [INFO] [stdout] 597 + } [INFO] [stdout] 598 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:587:29 [INFO] [stdout] | [INFO] [stdout] 587 | / ... if suffix.len() > 1 [INFO] [stdout] 588 | | ... && (morphem.ends_with("a") [INFO] [stdout] 589 | | ... || morphem.ends_with("i") [INFO] [stdout] 590 | | ... || morphem.ends_with("u") [INFO] [stdout] ... | [INFO] [stdout] 595 | | ... final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 596 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 584 ~ Some(suffix) [INFO] [stdout] 585 | // current suffix in the verbal form [INFO] [stdout] ... [INFO] [stdout] 591 | || morphem.ends_with("e")) [INFO] [stdout] 592 ~ => { [INFO] [stdout] 593 | let mut truncated_suffix = suffix; [INFO] [stdout] 594 | truncated_suffix.remove(0); [INFO] [stdout] 595 | final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] 596 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/lib.rs:595:64 [INFO] [stdout] | [INFO] [stdout] 595 | ... final_verb.add_final_ps_suffix(format!("{}", truncated_suffix)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `truncated_suffix.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` 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/lib.rs:634:57 [INFO] [stdout] | [INFO] [stdout] 634 | ... None => match self.slot_10.clone() { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 635 | | ... Some(_) => { [INFO] [stdout] 636 | | ... // has a locative marker [INFO] [stdout] 637 | | ... todo!("remove initial person prefix with locative marker and ventive") [INFO] [stdout] 638 | | ... } [INFO] [stdout] 639 | | ... None => (), [INFO] [stdout] 640 | | ... }, [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] 634 ~ None => if let Some(_) = self.slot_10.clone() { [INFO] [stdout] 635 + // has a locative marker [INFO] [stdout] 636 + todo!("remove initial person prefix with locative marker and ventive") [INFO] [stdout] 637 ~ }, [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/lib.rs:649:29 [INFO] [stdout] | [INFO] [stdout] 649 | / ... match final_verb.find_previous_morphem(5) { [INFO] [stdout] 650 | | ... Some(morphem) => { [INFO] [stdout] 651 | | ... if morphem.ends_with("a") { [INFO] [stdout] 652 | | ... final_verb.add_initial_person_prefix(String::from("a")) [INFO] [stdout] ... | [INFO] [stdout] 661 | | ... None => (), [INFO] [stdout] 662 | | ... } [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] 649 ~ if let Some(morphem) = final_verb.find_previous_morphem(5) { [INFO] [stdout] 650 + if morphem.ends_with("a") { [INFO] [stdout] 651 + final_verb.add_initial_person_prefix(String::from("a")) [INFO] [stdout] 652 + } else if morphem.ends_with("i") { [INFO] [stdout] 653 + final_verb.add_initial_person_prefix(String::from("i")) [INFO] [stdout] 654 + } else if morphem.ends_with("u") { [INFO] [stdout] 655 + final_verb.add_initial_person_prefix(String::from("u")) [INFO] [stdout] 656 + } else { [INFO] [stdout] 657 + () [INFO] [stdout] 658 + } [INFO] [stdout] 659 + } [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/lib.rs:698:13 [INFO] [stdout] | [INFO] [stdout] 698 | / match final_verb.find_following_morphem(MarkerName::Ventive.position() + 1) { [INFO] [stdout] 699 | | Some((morphem, marker_name)) => { [INFO] [stdout] 700 | | if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] 701 | | final_verb.add_ventive(String::from("mi")); [INFO] [stdout] ... | [INFO] [stdout] 710 | | None => (), [INFO] [stdout] 711 | | } [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] 698 ~ if let Some((morphem, marker_name)) = final_verb.find_following_morphem(MarkerName::Ventive.position() + 1) { [INFO] [stdout] 699 + if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] 700 + final_verb.add_ventive(String::from("mi")); [INFO] [stdout] 701 + } else if morphem == String::from("ra") [INFO] [stdout] 702 + && marker_name == MarkerName::DativePrefix [INFO] [stdout] 703 + { [INFO] [stdout] 704 + final_verb.add_ventive(String::from("ma")); [INFO] [stdout] 705 + } else { [INFO] [stdout] 706 + () [INFO] [stdout] 707 + } [INFO] [stdout] 708 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/lib.rs:700:35 [INFO] [stdout] | [INFO] [stdout] 700 | if morphem == String::from("ni") && marker_name == MarkerName::LocativePrefix { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `"ni"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/lib.rs:702:42 [INFO] [stdout] | [INFO] [stdout] 702 | } else if morphem == String::from("ra") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `"ra"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this returns a `Result<_, ()>` [INFO] [stdout] --> src/lib.rs:783:5 [INFO] [stdout] | [INFO] [stdout] 783 | fn name_by_position(position: usize) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use a custom `Error` type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err [INFO] [stdout] = note: `#[warn(clippy::result_unit_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `self` [INFO] [stdout] --> src/lib.rs:849:18 [INFO] [stdout] | [INFO] [stdout] 849 | for i in starting_slot..self.len() { [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] 849 - for i in starting_slot..self.len() { [INFO] [stdout] 849 + for (i, ) in self.iter().enumerate().skip(starting_slot) { [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/lib.rs:851:17 [INFO] [stdout] | [INFO] [stdout] 851 | / match Self::name_by_position(i) { [INFO] [stdout] 852 | | Ok(name) => return Some((self[i].clone(), name)), [INFO] [stdout] 853 | | Err(_) => (), [INFO] [stdout] 854 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(name) = Self::name_by_position(i) { return Some((self[i].clone(), name)) }` [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: the loop variable `i` is only used to index `self` [INFO] [stdout] --> src/lib.rs:860:18 [INFO] [stdout] | [INFO] [stdout] 860 | for i in 0..self.len() { [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] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 860 - for i in 0..self.len() { [INFO] [stdout] 860 + for in &self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:872:9 [INFO] [stdout] | [INFO] [stdout] 872 | return Some(suffix); [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] 872 - return Some(suffix); [INFO] [stdout] 872 + Some(suffix) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/lib.rs:896:9 [INFO] [stdout] | [INFO] [stdout] 896 | format!("{}", self.join("")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `self.join("").to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:986:21 [INFO] [stdout] | [INFO] [stdout] 986 | return "e".to_string(); [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 "e".to_string(); [INFO] [stdout] 986 + "e".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:988:21 [INFO] [stdout] | [INFO] [stdout] 988 | return "".to_string(); [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] 988 - return "".to_string(); [INFO] [stdout] 988 + "".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:996:17 [INFO] [stdout] | [INFO] [stdout] 996 | return "eš".to_string(); [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] 996 - return "eš".to_string(); [INFO] [stdout] 996 + "eš".to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:999:17 [INFO] [stdout] | [INFO] [stdout] 999 | return "".to_string(); // 15.3.3 [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] 999 - return "".to_string(); // 15.3.3 [INFO] [stdout] 999 + "".to_string()// 15.3.3 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.50s [INFO] running `Command { std: "docker" "inspect" "ed2bd46e77ca4850c1cd621d490c82b6bc4d1b162b19708726abdb9ed421972a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ed2bd46e77ca4850c1cd621d490c82b6bc4d1b162b19708726abdb9ed421972a", kill_on_drop: false }` [INFO] [stdout] ed2bd46e77ca4850c1cd621d490c82b6bc4d1b162b19708726abdb9ed421972a