[INFO] cloning repository https://github.com/lokrain/songify
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lokrain/songify" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flokrain%2Fsongify", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flokrain%2Fsongify'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5923691fa873b570f16d1b01b62f1b3ad735bddf
[INFO] checking lokrain/songify against try#59a256151e578f525a26127f2c3e3a6c7e2982ca for pr-149291-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flokrain%2Fsongify" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-4-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/lokrain/songify
[INFO] finished tweaking git repo https://github.com/lokrain/songify
[INFO] tweaked toml for git repo https://github.com/lokrain/songify written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lokrain/songify on toolchain 59a256151e578f525a26127f2c3e3a6c7e2982ca
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/lokrain/songify 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" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking lokrain/songify against try#59a256151e578f525a26127f2c3e3a6c7e2982ca for pr-149291-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flokrain%2Fsongify" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-4-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/lokrain/songify
[INFO] finished tweaking git repo https://github.com/lokrain/songify
[INFO] tweaked toml for git repo https://github.com/lokrain/songify written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/lokrain/songify on toolchain 59a256151e578f525a26127f2c3e3a6c7e2982ca
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/lokrain/songify 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" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cd7b1a94add45212f850d2a7bba0a5d0c83ecbe1a06907513fa2213190313b1d
[INFO] running `Command { std: "docker" "start" "-a" "cd7b1a94add45212f850d2a7bba0a5d0c83ecbe1a06907513fa2213190313b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cd7b1a94add45212f850d2a7bba0a5d0c83ecbe1a06907513fa2213190313b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd7b1a94add45212f850d2a7bba0a5d0c83ecbe1a06907513fa2213190313b1d", kill_on_drop: false }`
[INFO] [stdout] cd7b1a94add45212f850d2a7bba0a5d0c83ecbe1a06907513fa2213190313b1d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e10e614f8ba96b1823987e3bb692365427a3a13f72e5f4851ae636b550eafa47
[INFO] running `Command { std: "docker" "start" "-a" "e10e614f8ba96b1823987e3bb692365427a3a13f72e5f4851ae636b550eafa47", kill_on_drop: false }`
[INFO] [stderr]     Checking mt-core v0.1.0 (/opt/rustwide/workdir/crates/mt-core)
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking serde_core v1.0.228
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking anyhow v1.0.100
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking mt-alloc v0.1.0 (/opt/rustwide/workdir/crates/mt-alloc)
[INFO] [stderr]     Checking mt-signal-core v0.1.0 (/opt/rustwide/workdir/crates/mt-signal-core)
[INFO] [stderr]     Checking mt-semantic v0.1.0 (/opt/rustwide/workdir/crates/mt-semantic)
[INFO] [stderr]     Checking mt-analysis v0.1.0 (/opt/rustwide/workdir/crates/mt-analysis)
[INFO] [stderr]     Checking clap_builder v4.5.51
[INFO] [stderr]     Checking mt-engine v0.1.0 (/opt/rustwide/workdir/crates/mt-engine)
[INFO] [stdout] error: expected one of `::`, `;`, or `as`, found `-`
[INFO] [stdout]   --> crates/mt-engine/src/types.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | use mt-core::events::{
[INFO] [stdout]    |       ^ expected one of `::`, `;`, or `as`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `value_type_of` is defined multiple times
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:369:1
[INFO] [stdout]     |
[INFO] [stdout]  67 | fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ---------------------------------------- previous definition of the value `value_type_of` here
[INFO] [stdout] ...
[INFO] [stdout] 369 | pub(crate) fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `value_type_of` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `value_type_of` must be defined only once in the value namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::engine_session::OfflineSession`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     engine_session::OfflineSession,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `OfflineSession` in `engine_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::pipeline::Pipeline`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pipeline::Pipeline,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ no `Pipeline` in `pipeline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `::`, `;`, or `as`, found `-`
[INFO] [stdout]   --> crates/mt-engine/src/types.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | use mt-core::events::{
[INFO] [stdout]    |       ^ expected one of `::`, `;`, or `as`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `validate_engine` in module `validate`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     validate::validate_engine(&engine_cfg, &pipeline)
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^ not found in `validate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EdgeConfig`
[INFO] [stdout]   --> crates/mt-engine/src/pipeline.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     config::{EdgeConfig, NodeConfig, PipelineConfig},
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `::`, `;`, or `as`, found `-`
[INFO] [stdout]   --> crates/mt-engine/src/types.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | use mt-core::events::{
[INFO] [stdout]    |       ^ expected one of `::`, `;`, or `as`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `value_type_of` is defined multiple times
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:369:1
[INFO] [stdout]     |
[INFO] [stdout]  67 | fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ---------------------------------------- previous definition of the value `value_type_of` here
[INFO] [stdout] ...
[INFO] [stdout] 369 | pub(crate) fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `value_type_of` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `value_type_of` must be defined only once in the value namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `value_type_of` is defined multiple times
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:369:1
[INFO] [stdout]     |
[INFO] [stdout]  67 | fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ---------------------------------------- previous definition of the value `value_type_of` here
[INFO] [stdout] ...
[INFO] [stdout] 369 | pub(crate) fn value_type_of(v: &Value) -> ValueType {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `value_type_of` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `value_type_of` must be defined only once in the value namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `I` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `I` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<I>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `I` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 139 |     I: FromValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `O` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `O` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<O>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `O` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 140 |     O: IntoValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::engine_session::OfflineSession`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     engine_session::OfflineSession,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `OfflineSession` in `engine_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::engine_session::OfflineSession`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     engine_session::OfflineSession,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `OfflineSession` in `engine_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `from_path_or_default` found for struct `EngineConfig` in the current scope
[INFO] [stdout]    --> crates/mt-engine/src/api.rs:101:19
[INFO] [stdout]     |
[INFO] [stdout] 101 |     EngineConfig::from_path_or_default(path)
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^ function or associated item not found in `EngineConfig`
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/mt-engine/src/config.rs:49:1
[INFO] [stdout]     |
[INFO] [stdout]  49 | pub struct EngineConfig {
[INFO] [stdout]     | ----------------------- function or associated item `from_path_or_default` not found for this struct
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `EngineConfig`, consider using `EngineConfig::new` which returns `EngineConfig`
[INFO] [stdout]    --> crates/mt-engine/src/config.rs:55:5
[INFO] [stdout]     |
[INFO] [stdout]  55 |     pub fn new(pipeline: PipelineConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::pipeline::Pipeline`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pipeline::Pipeline,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ no `Pipeline` in `pipeline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `validate_engine` in module `validate`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     validate::validate_engine(&engine_cfg, &pipeline)
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^ not found in `validate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EdgeConfig`
[INFO] [stdout]   --> crates/mt-engine/src/pipeline.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     config::{EdgeConfig, NodeConfig, PipelineConfig},
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                 -------- ^^^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                                                   -------- ^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from.as_str()) || !ids.contains(e.to) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0428, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mt-engine` (lib) due to 10 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0277]: `I` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `I` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<I>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `I` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 139 |     I: FromValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `O` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `O` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<O>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `O` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 140 |     O: IntoValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::pipeline::Pipeline`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pipeline::Pipeline,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ no `Pipeline` in `pipeline`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `validate_engine` in module `validate`
[INFO] [stdout]   --> crates/mt-engine/src/api.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     validate::validate_engine(&engine_cfg, &pipeline)
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^ not found in `validate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EdgeConfig`
[INFO] [stdout]   --> crates/mt-engine/src/pipeline.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     config::{EdgeConfig, NodeConfig, PipelineConfig},
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `from_path_or_default` found for struct `EngineConfig` in the current scope
[INFO] [stdout]    --> crates/mt-engine/src/api.rs:101:19
[INFO] [stdout]     |
[INFO] [stdout] 101 |     EngineConfig::from_path_or_default(path)
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^ function or associated item not found in `EngineConfig`
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/mt-engine/src/config.rs:49:1
[INFO] [stdout]     |
[INFO] [stdout]  49 | pub struct EngineConfig {
[INFO] [stdout]     | ----------------------- function or associated item `from_path_or_default` not found for this struct
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `EngineConfig`, consider using `EngineConfig::new` which returns `EngineConfig`
[INFO] [stdout]    --> crates/mt-engine/src/config.rs:55:5
[INFO] [stdout]     |
[INFO] [stdout]  55 |     pub fn new(pipeline: PipelineConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `I` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `I` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<I>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `I` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 139 |     I: FromValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `O` cannot be sent between threads safely
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:137:27
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl<I, O, N> DynNode for NodeAdapter<I, O, N>
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^ `O` cannot be sent between threads safely
[INFO] [stdout]     |
[INFO] [stdout] note: required because it appears within the type `PhantomData<O>`
[INFO] [stdout]    --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/core/src/marker.rs:819:11
[INFO] [stdout] note: required because it appears within the type `NodeAdapter<I, O, N>`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct NodeAdapter<I, O, N>
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `DynNode`
[INFO] [stdout]    --> crates/mt-engine/src/pipeline.rs:85:20
[INFO] [stdout]     |
[INFO] [stdout]  85 | pub trait DynNode: Send {
[INFO] [stdout]     |                    ^^^^ required by this bound in `DynNode`
[INFO] [stdout] help: consider further restricting type parameter `O` with trait `Send`
[INFO] [stdout]     |
[INFO] [stdout] 140 |     O: IntoValue + std::marker::Send,
[INFO] [stdout]     |                  +++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                 -------- ^^^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                                                   -------- ^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from.as_str()) || !ids.contains(e.to) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0428, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mt-engine` (lib) due to 10 previous errors; 1 warning emitted
[INFO] [stdout] error[E0599]: no function or associated item named `from_path_or_default` found for struct `EngineConfig` in the current scope
[INFO] [stdout]    --> crates/mt-engine/src/api.rs:101:19
[INFO] [stdout]     |
[INFO] [stdout] 101 |     EngineConfig::from_path_or_default(path)
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^ function or associated item not found in `EngineConfig`
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/mt-engine/src/config.rs:49:1
[INFO] [stdout]     |
[INFO] [stdout]  49 | pub struct EngineConfig {
[INFO] [stdout]     | ----------------------- function or associated item `from_path_or_default` not found for this struct
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `EngineConfig`, consider using `EngineConfig::new` which returns `EngineConfig`
[INFO] [stdout]    --> crates/mt-engine/src/config.rs:55:5
[INFO] [stdout]     |
[INFO] [stdout]  55 |     pub fn new(pipeline: PipelineConfig) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                 -------- ^^^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `&String: Borrow<str>` is not satisfied
[INFO] [stdout]   --> crates/mt-engine/src/validate.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout]    |                                                   -------- ^^^^^^^^^^^^^ the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]    |                                                   |
[INFO] [stdout]    |                                                   required by a bound introduced by this call
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Borrow<str>` is not implemented for `&String`
[INFO] [stdout]       but it is implemented for `String`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/str.rs:189:0
[INFO] [stdout]    = help: for that trait implementation, expected `String`, found `&String`
[INFO] [stdout] note: required by a bound in `BTreeSet::<T, A>::contains`
[INFO] [stdout]   --> /rustc/59a256151e578f525a26127f2c3e3a6c7e2982ca/library/alloc/src/collections/btree/set.rs:604:4
[INFO] [stdout] help: consider removing this method call, as the receiver has type `String` and `String: Borrow<str>` trivially holds
[INFO] [stdout]    |
[INFO] [stdout] 23 -         if !ids.contains(e.from.as_str()) || !ids.contains(e.to.as_str()) {
[INFO] [stdout] 23 +         if !ids.contains(e.from.as_str()) || !ids.contains(e.to) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0428, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mt-engine` (lib test) due to 10 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "e10e614f8ba96b1823987e3bb692365427a3a13f72e5f4851ae636b550eafa47", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e10e614f8ba96b1823987e3bb692365427a3a13f72e5f4851ae636b550eafa47", kill_on_drop: false }`
[INFO] [stdout] e10e614f8ba96b1823987e3bb692365427a3a13f72e5f4851ae636b550eafa47
