[INFO] cloning repository https://github.com/cambiata/dorico-speededitor
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cambiata/dorico-speededitor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcambiata%2Fdorico-speededitor", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcambiata%2Fdorico-speededitor'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7ba4c57c1d7af9bd1fbf4e3b0c9bb24638400508
[INFO] checking cambiata/dorico-speededitor against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcambiata%2Fdorico-speededitor" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/cambiata/dorico-speededitor
[INFO] finished tweaking git repo https://github.com/cambiata/dorico-speededitor
[INFO] tweaked toml for git repo https://github.com/cambiata/dorico-speededitor written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/cambiata/dorico-speededitor on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/cambiata/dorico-speededitor 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" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb
[INFO] running `Command { std: "docker" "start" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling unicode-ident v1.0.14
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling pkg-config v0.3.31
[INFO] [stderr]    Compiling cc v1.2.10
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking litemap v0.7.4
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]     Checking writeable v0.5.5
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling typenum v1.17.0
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]     Checking icu_locid_transform_data v1.5.0
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling syn v2.0.96
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking icu_properties_data v1.5.0
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]     Checking utf16_iter v1.0.5
[INFO] [stderr]     Checking foreign-types-shared v0.1.1
[INFO] [stderr]     Checking icu_normalizer_data v1.5.0
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling openssl v0.10.68
[INFO] [stderr]     Checking write16 v1.0.0
[INFO] [stderr]    Compiling toml_datetime v0.6.8
[INFO] [stderr]     Checking foreign-types v0.3.2
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustversion v1.0.19
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]    Compiling once_cell v1.20.2
[INFO] [stderr]    Compiling native-tls v0.2.12
[INFO] [stderr]    Compiling openssl-sys v0.9.104
[INFO] [stderr]     Checking bitflags v2.8.0
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling indexmap v2.7.0
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]    Compiling hidapi v1.5.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking socket2 v0.5.8
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking log v0.4.25
[INFO] [stderr]     Checking bytes v1.9.0
[INFO] [stderr]     Checking openssl-probe v0.1.5
[INFO] [stderr]     Checking percent-encoding v2.3.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking iana-time-zone v0.1.61
[INFO] [stderr]     Checking cpufeatures v0.2.16
[INFO] [stderr]     Checking sha-1 v0.9.8
[INFO] [stderr]     Checking strum v0.24.1
[INFO] [stderr]     Checking base64 v0.12.3
[INFO] [stderr]     Checking tinyjson v2.5.1
[INFO] [stderr]     Checking chrono v0.4.39
[INFO] [stderr]    Compiling strum_macros v0.24.3
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling num_enum_derive v0.5.11
[INFO] [stderr]    Compiling zerofrom-derive v0.1.5
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.8
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tokio v1.43.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking zerofrom v0.1.5
[INFO] [stderr]     Checking num_enum v0.5.11
[INFO] [stderr]     Checking pin-project v1.1.8
[INFO] [stderr]     Checking bmd-speededitor v0.2.3
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking websockets v0.3.0
[INFO] [stderr]     Checking dorico-speededitor v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]   --> src/main.rs:71:31
[INFO] [stdout]    |
[INFO] [stdout] 71 |     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 71 -     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout] 71 +     dorico_ws_write.send_text(dorico_accept_message(&session_token)).await.unwrap();
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 71 -     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout] 71 +     dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_accept_message(&session_token))).await.unwrap();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:170:40
[INFO] [stdout]     |
[INFO] [stdout] 170 | ...                   .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 170 -                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout] 170 +                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 170 -                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout] 170 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:174:60
[INFO] [stdout]     |
[INFO] [stdout] 174 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 174 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout] 174 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 174 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout] 174 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.Enter?Set=true", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:180:40
[INFO] [stdout]     |
[INFO] [stdout] 180 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 180 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout] 180 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 180 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout] 180 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:188:40
[INFO] [stdout]     |
[INFO] [stdout] 188 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 188 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout] 188 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 188 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout] 188 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:196:40
[INFO] [stdout]     |
[INFO] [stdout] 196 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 196 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout] 196 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 196 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout] 196 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 204 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout] 204 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 204 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout] 204 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:212:40
[INFO] [stdout]     |
[INFO] [stdout] 212 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 212 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout] 212 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 212 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout] 212 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:221:40
[INFO] [stdout]     |
[INFO] [stdout] 221 | ...                   .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 221 -                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout] 221 +                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 221 -                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout] 221 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveAdvance", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:229:60
[INFO] [stdout]     |
[INFO] [stdout] 229 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout] 229 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout] 229 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.SlurStart", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:234:60
[INFO] [stdout]     |
[INFO] [stdout] 234 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwr...
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 234 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwrap();
[INFO] [stdout] 234 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 234 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwrap();
[INFO] [stdout] 234 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:244:60
[INFO] [stdout]     |
[INFO] [stdout] 244 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 244 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout] 244 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 244 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout] 244 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.SlurStop", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:249:60
[INFO] [stdout]     |
[INFO] [stdout] 249 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 249 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout] 249 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 249 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout] 249 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.EndTupletRun", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:265:64
[INFO] [stdout]     |
[INFO] [stdout] 265 | ...                   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 265 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 265 +                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 265 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 265 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveRight", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:269:64
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 269 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 269 +                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 269 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 269 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveLeft", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:276:64
[INFO] [stdout]     |
[INFO] [stdout] 276 | ...   let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 276 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 276 +                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 276 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 276 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("EventEdit.NavigateRight", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:280:64
[INFO] [stdout]     |
[INFO] [stdout] 280 | ...   let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 280 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 280 +                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 280 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 280 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("EventEdit.NavigateLeft", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `dorico-speededitor` (bin "dorico-speededitor" test) due to 17 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]   --> src/main.rs:71:31
[INFO] [stdout]    |
[INFO] [stdout] 71 |     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 71 -     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout] 71 +     dorico_ws_write.send_text(dorico_accept_message(&session_token)).await.unwrap();
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 71 -     dorico_ws_write.send_text(dorico_accept_message(&session_token).into()).await.unwrap();
[INFO] [stdout] 71 +     dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_accept_message(&session_token))).await.unwrap();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:170:40
[INFO] [stdout]     |
[INFO] [stdout] 170 | ...                   .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 170 -                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout] 170 +                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 170 -                             .send_text(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token).into())
[INFO] [stdout] 170 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("Window.SwitchMode?WindowMode=kWriteMode", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:174:60
[INFO] [stdout]     |
[INFO] [stdout] 174 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 174 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout] 174 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 174 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.Enter?Set=true", &session_token).into()).await.unwrap();
[INFO] [stdout] 174 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.Enter?Set=true", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:180:40
[INFO] [stdout]     |
[INFO] [stdout] 180 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 180 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout] 180 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 180 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token).into())
[INFO] [stdout] 180 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kSemiQuaver", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:188:40
[INFO] [stdout]     |
[INFO] [stdout] 188 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 188 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout] 188 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 188 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token).into())
[INFO] [stdout] 188 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kQuaver", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:196:40
[INFO] [stdout]     |
[INFO] [stdout] 196 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 196 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout] 196 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 196 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token).into())
[INFO] [stdout] 196 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kCrotchet", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 204 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout] 204 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 204 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token).into())
[INFO] [stdout] 204 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kMinim", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:212:40
[INFO] [stdout]     |
[INFO] [stdout] 212 | ...                   .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 212 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout] 212 +                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 212 -                             .send_text(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token).into())
[INFO] [stdout] 212 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.NoteValue?LogDuration=kSemibreve", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:221:40
[INFO] [stdout]     |
[INFO] [stdout] 221 | ...                   .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 221 -                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout] 221 +                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token))
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 221 -                             .send_text(dorico_command("NoteInput.MoveAdvance", &session_token).into())
[INFO] [stdout] 221 +                             .send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveAdvance", &session_token)))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:229:60
[INFO] [stdout]     |
[INFO] [stdout] 229 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout] 229 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 229 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStart", &session_token).into()).await.unwrap();
[INFO] [stdout] 229 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.SlurStart", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:234:60
[INFO] [stdout]     |
[INFO] [stdout] 234 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwr...
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 234 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwrap();
[INFO] [stdout] 234 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 234 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token).into()).await.unwrap();
[INFO] [stdout] 234 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.StartTupletRun?Definition=3", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:244:60
[INFO] [stdout]     |
[INFO] [stdout] 244 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 244 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout] 244 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 244 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.SlurStop", &session_token).into()).await.unwrap();
[INFO] [stdout] 244 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.SlurStop", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:249:60
[INFO] [stdout]     |
[INFO] [stdout] 249 | ...   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 249 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout] 249 +                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 249 -                         let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.EndTupletRun", &session_token).into()).await.unwrap();
[INFO] [stdout] 249 +                         let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.EndTupletRun", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:265:64
[INFO] [stdout]     |
[INFO] [stdout] 265 | ...                   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 265 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 265 +                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 265 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 265 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveRight", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:269:64
[INFO] [stdout]     |
[INFO] [stdout] 269 | ...                   let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 269 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 269 +                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 269 -                             let _ = &dorico_ws_write.send_text(dorico_command("NoteInput.MoveLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 269 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("NoteInput.MoveLeft", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:276:64
[INFO] [stdout]     |
[INFO] [stdout] 276 | ...   let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 276 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 276 +                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 276 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateRight", &session_token).into()).await.unwrap();
[INFO] [stdout] 276 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("EventEdit.NavigateRight", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `std::string::String`
[INFO] [stdout]    --> src/main.rs:280:64
[INFO] [stdout]     |
[INFO] [stdout] 280 | ...   let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 280 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 280 +                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token)).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 280 -                             let _ = &dorico_ws_write.send_text(dorico_command("EventEdit.NavigateLeft", &session_token).into()).await.unwrap();
[INFO] [stdout] 280 +                             let _ = &dorico_ws_write.send_text(<std::string::String as Into<_>>::into(dorico_command("EventEdit.NavigateLeft", &session_token))).await.unwrap();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `dorico-speededitor` (bin "dorico-speededitor") due to 17 previous errors
[INFO] running `Command { std: "docker" "inspect" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb", kill_on_drop: false }`
[INFO] [stdout] e59627ba3e9cfefda0728e85ec145047a5b8f6919a8ad9de543ce01b2347b9bb
