[INFO] cloning repository https://github.com/Aloento/RustySpine [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Aloento/RustySpine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAloento%2FRustySpine", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAloento%2FRustySpine'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b2ca13b1b37628e4a951e17a6ab7a9fd511f492f [INFO] checking Aloento/RustySpine/b2ca13b1b37628e4a951e17a6ab7a9fd511f492f against master#f609b7e0586f81fefb3523e3e17adf779ac416be for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAloento%2FRustySpine" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Aloento/RustySpine on toolchain f609b7e0586f81fefb3523e3e17adf779ac416be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Aloento/RustySpine [INFO] finished tweaking git repo https://github.com/Aloento/RustySpine [INFO] tweaked toml for git repo https://github.com/Aloento/RustySpine written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/Aloento/RustySpine 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" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] c188678377baccf8fad3150f697cdd9d2cf3255eabce9cba14f7cb82172afddf [INFO] running `Command { std: "docker" "start" "-a" "c188678377baccf8fad3150f697cdd9d2cf3255eabce9cba14f7cb82172afddf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c188678377baccf8fad3150f697cdd9d2cf3255eabce9cba14f7cb82172afddf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c188678377baccf8fad3150f697cdd9d2cf3255eabce9cba14f7cb82172afddf", kill_on_drop: false }` [INFO] [stdout] c188678377baccf8fad3150f697cdd9d2cf3255eabce9cba14f7cb82172afddf [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 37490ce3f6dd101775f9d83aa7a6cdab50429e69a5e63a6ba756c0ed4445e8d7 [INFO] running `Command { std: "docker" "start" "-a" "37490ce3f6dd101775f9d83aa7a6cdab50429e69a5e63a6ba756c0ed4445e8d7", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.86 [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Checking smallvec v1.6.1 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking lock_api v0.3.4 [INFO] [stderr] Checking parking_lot_core v0.7.2 [INFO] [stderr] Checking parking_lot v0.10.2 [INFO] [stderr] Checking object-pool v0.5.3 [INFO] [stderr] Checking RustySpine v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `,` [INFO] [stdout] --> src/animation_state.rs:116:25 [INFO] [stdout] | [INFO] [stdout] 116 | self.next = None, [INFO] [stdout] | ^ expected one of 8 possible tokens [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `,` [INFO] [stdout] --> src/animation_state.rs:116:25 [INFO] [stdout] | [INFO] [stdout] 116 | self.next = None, [INFO] [stdout] | ^ expected one of 8 possible tokens [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/attachments/path_attachment.rs:12:6 [INFO] [stdout] | [INFO] [stdout] 12 | impl PathAttachment { [INFO] [stdout] | ^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 12 | impl PathAttachment<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/attachments/vertex_attachment.rs:13:6 [INFO] [stdout] | [INFO] [stdout] 13 | impl VertexAttachment { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 13 | impl VertexAttachment<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/attachments/path_attachment.rs:12:6 [INFO] [stdout] | [INFO] [stdout] 12 | impl PathAttachment { [INFO] [stdout] | ^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 12 | impl PathAttachment<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/attachments/vertex_attachment.rs:13:6 [INFO] [stdout] | [INFO] [stdout] 13 | impl VertexAttachment { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 13 | impl VertexAttachment<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/animation_state.rs:19:17 [INFO] [stdout] | [INFO] [stdout] 19 | events: Vec, [INFO] [stdout] | ^^^^^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: consider using the `'a` lifetime [INFO] [stdout] | [INFO] [stdout] 19 | events: Vec>, [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/animation_state.rs:79:6 [INFO] [stdout] | [INFO] [stdout] 79 | impl TrackEntry { [INFO] [stdout] | ^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 79 | impl TrackEntry<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/animation_state.rs:19:17 [INFO] [stdout] | [INFO] [stdout] 19 | events: Vec, [INFO] [stdout] | ^^^^^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: consider using the `'a` lifetime [INFO] [stdout] | [INFO] [stdout] 19 | events: Vec>, [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `Format` in this scope [INFO] [stdout] --> src/attachments/texture_atlas.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | format: Format, [INFO] [stdout] | ^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0726]: implicit elided lifetime not allowed here [INFO] [stdout] --> src/animation_state.rs:79:6 [INFO] [stdout] | [INFO] [stdout] 79 | impl TrackEntry { [INFO] [stdout] | ^^^^^^^^^^ expected lifetime parameter [INFO] [stdout] | [INFO] [stdout] help: indicate the anonymous lifetime [INFO] [stdout] | [INFO] [stdout] 79 | impl TrackEntry<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `Format` in this scope [INFO] [stdout] --> src/attachments/texture_atlas.rs:49:13 [INFO] [stdout] | [INFO] [stdout] 49 | format: Format, [INFO] [stdout] | ^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::Borrow` [INFO] [stdout] --> src/skeleton.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::borrow::Borrow; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::borrow::Borrow` [INFO] [stdout] --> src/skeleton.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::borrow::Borrow; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `assoc_char_funcs` has been stable since 1.52.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/lib.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | #![feature(assoc_char_funcs)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the feature `assoc_char_funcs` has been stable since 1.52.0 and no longer requires an attribute to enable [INFO] [stdout] --> src/lib.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 2 | #![feature(assoc_char_funcs)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(stable_features)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | listeners: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:17:24 [INFO] [stdout] | [INFO] [stdout] 17 | listeners: Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:54:15 [INFO] [stdout] | [INFO] [stdout] 54 | listener: dyn AnimationStateListener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:54:15 [INFO] [stdout] | [INFO] [stdout] 54 | listener: dyn AnimationStateListener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `(dyn AnimationStateListener + 'static)` cannot be known at compilation time [INFO] [stdout] --> src/animation_state.rs:54:15 [INFO] [stdout] | [INFO] [stdout] 54 | listener: dyn AnimationStateListener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `(dyn AnimationStateListener + 'static)` [INFO] [stdout] = note: only the last field of a struct may have a dynamically sized type [INFO] [stdout] = help: change the field's type to have a statically known size [INFO] [stdout] help: borrowed types always have a statically known size [INFO] [stdout] | [INFO] [stdout] 54 | listener: &dyn AnimationStateListener, [INFO] [stdout] | + [INFO] [stdout] help: the `Box` type always has a statically known size and allocates its contents in the heap [INFO] [stdout] | [INFO] [stdout] 54 | listener: Box, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the size for values of type `(dyn AnimationStateListener + 'static)` cannot be known at compilation time [INFO] [stdout] --> src/animation_state.rs:54:15 [INFO] [stdout] | [INFO] [stdout] 54 | listener: dyn AnimationStateListener, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time [INFO] [stdout] | [INFO] [stdout] = help: the trait `Sized` is not implemented for `(dyn AnimationStateListener + 'static)` [INFO] [stdout] = note: only the last field of a struct may have a dynamically sized type [INFO] [stdout] = help: change the field's type to have a statically known size [INFO] [stdout] help: borrowed types always have a statically known size [INFO] [stdout] | [INFO] [stdout] 54 | listener: &dyn AnimationStateListener, [INFO] [stdout] | + [INFO] [stdout] help: the `Box` type always has a statically known size and allocates its contents in the heap [INFO] [stdout] | [INFO] [stdout] 54 | listener: Box, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot construct `TextureRegion` with struct literal syntax due to private fields [INFO] [stdout] --> src/attachments/mesh_attachment.rs:25:21 [INFO] [stdout] | [INFO] [stdout] 25 | region: TextureRegion {}, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: private fields that were not provided [INFO] [stdout] help: you might have meant to use the `new` associated function [INFO] [stdout] | [INFO] [stdout] 25 | region: TextureRegion::new(), [INFO] [stdout] | ~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot construct `TextureRegion` with struct literal syntax due to private fields [INFO] [stdout] --> src/attachments/mesh_attachment.rs:25:21 [INFO] [stdout] | [INFO] [stdout] 25 | region: TextureRegion {}, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: private fields that were not provided [INFO] [stdout] help: you might have meant to use the `new` associated function [INFO] [stdout] | [INFO] [stdout] 25 | region: TextureRegion::new(), [INFO] [stdout] | ~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/ik_constraint.rs:28:35 [INFO] [stdout] | [INFO] [stdout] 28 | target: Some(skeleton.findBone(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/ik_constraint.rs:28:35 [INFO] [stdout] | [INFO] [stdout] 28 | target: Some(skeleton.findBone(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/ik_constraint.rs:39:35 [INFO] [stdout] | [INFO] [stdout] 39 | i.bones.push(skeleton.findBone(&boneData.name)); [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/ik_constraint.rs:39:35 [INFO] [stdout] | [INFO] [stdout] 39 | i.bones.push(skeleton.findBone(&boneData.name)); [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/transform_constraint.rs:27:35 [INFO] [stdout] | [INFO] [stdout] 27 | target: Some(skeleton.findBone(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/transform_constraint.rs:27:35 [INFO] [stdout] | [INFO] [stdout] 27 | target: Some(skeleton.findBone(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/transform_constraint.rs:37:35 [INFO] [stdout] | [INFO] [stdout] 37 | i.bones.push(skeleton.findBone(&boneData.name)) [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/transform_constraint.rs:37:35 [INFO] [stdout] | [INFO] [stdout] 37 | i.bones.push(skeleton.findBone(&boneData.name)) [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findSlot` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/path_constraint.rs:45:35 [INFO] [stdout] | [INFO] [stdout] 45 | target: Some(skeleton.findSlot(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findSlot(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn findSlot(slotName: &String) -> Option<&Slot> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findSlot` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/path_constraint.rs:45:35 [INFO] [stdout] | [INFO] [stdout] 45 | target: Some(skeleton.findSlot(&data.target.unwrap().name)), [INFO] [stdout] | ---------^^^^^^^^---------------------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findSlot(&data.target.unwrap().name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:96:5 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn findSlot(slotName: &String) -> Option<&Slot> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/path_constraint.rs:55:35 [INFO] [stdout] | [INFO] [stdout] 55 | i.bones.push(skeleton.findBone(&boneData.name)); [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:33:24 [INFO] [stdout] | [INFO] [stdout] 33 | listeners: vec![], [INFO] [stdout] | ^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] = note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `findBone` found for reference `&'a Skeleton<'a>` in the current scope [INFO] [stdout] --> src/path_constraint.rs:55:35 [INFO] [stdout] | [INFO] [stdout] 55 | i.bones.push(skeleton.findBone(&boneData.name)); [INFO] [stdout] | ---------^^^^^^^^---------------- [INFO] [stdout] | | | [INFO] [stdout] | | this is an associated function, not a method [INFO] [stdout] | help: use associated function syntax instead: `Skeleton::<'a>::findBone(&boneData.name)` [INFO] [stdout] | [INFO] [stdout] = note: found the following associated functions; to be used as methods, functions must have a `self` parameter [INFO] [stdout] note: the candidate is defined in an impl for the type `Skeleton<'a>` [INFO] [stdout] --> src/skeleton.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:33:24 [INFO] [stdout] | [INFO] [stdout] 33 | listeners: vec![], [INFO] [stdout] | ^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] = note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:33:24 [INFO] [stdout] | [INFO] [stdout] 33 | listeners: vec![], [INFO] [stdout] | ^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] = note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/animation_state.rs:89:23 [INFO] [stdout] | [INFO] [stdout] 89 | listener: (), [INFO] [stdout] | ^^ expected `dyn AnimationStateListener`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: expected trait object `(dyn AnimationStateListener + 'static)` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:89:23 [INFO] [stdout] | [INFO] [stdout] 89 | listener: (), [INFO] [stdout] | ^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:33:24 [INFO] [stdout] | [INFO] [stdout] 33 | listeners: vec![], [INFO] [stdout] | ^^^^^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] = note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/animation_state.rs:89:23 [INFO] [stdout] | [INFO] [stdout] 89 | listener: (), [INFO] [stdout] | ^^ expected `dyn AnimationStateListener`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: expected trait object `(dyn AnimationStateListener + 'static)` [INFO] [stdout] found unit type `()` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0038]: the trait `AnimationStateListener` cannot be made into an object [INFO] [stdout] --> src/animation_state.rs:89:23 [INFO] [stdout] | [INFO] [stdout] 89 | listener: (), [INFO] [stdout] | ^^ `AnimationStateListener` cannot be made into an object [INFO] [stdout] | [INFO] [stdout] note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit [INFO] [stdout] --> src/animation_state.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 127 | pub trait AnimationStateListener { [INFO] [stdout] | ---------------------- this trait cannot be made into an object... [INFO] [stdout] 128 | fn start(entry: TrackEntry); [INFO] [stdout] | ^^^^^ ...because associated function `start` has no `self` parameter [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^^ ...because associated function `interrupt` has no `self` parameter [INFO] [stdout] 130 | fn end(entry: TrackEntry); [INFO] [stdout] | ^^^ ...because associated function `end` has no `self` parameter [INFO] [stdout] 131 | fn dispose(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^ ...because associated function `dispose` has no `self` parameter [INFO] [stdout] 132 | fn complete(entry: TrackEntry); [INFO] [stdout] | ^^^^^^^^ ...because associated function `complete` has no `self` parameter [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event); [INFO] [stdout] | ^^^^^ ...because associated function `event` has no `self` parameter [INFO] [stdout] 134 | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event); [INFO] [stdout] | ^^^^^^^^ ...because associated function `eventInt` has no `self` parameter [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32); [INFO] [stdout] | ^^^^^^^^^^^ ...because associated function `completeInt` has no `self` parameter [INFO] [stdout] 137 | fn startInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^^^ ...because associated function `startInt` has no `self` parameter [INFO] [stdout] 138 | fn endInt(trackIndex: i32); [INFO] [stdout] | ^^^^^^ ...because associated function `endInt` has no `self` parameter [INFO] [stdout] help: consider turning `end` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 130 | fn end(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `end` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 130 | fn end(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `start` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 128 | fn start(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `start` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 128 | fn start(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `event` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 133 | fn event(&self, entry: TrackEntry, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `event` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 133 | fn event(entry: TrackEntry, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `interrupt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `interrupt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 129 | fn interrupt(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `dispose` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `dispose` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 131 | fn dispose(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `complete` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(&self, entry: TrackEntry); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `complete` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 132 | fn complete(entry: TrackEntry) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `eventInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(&self, trackIndex: i32, event: Event); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `eventInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 135 | fn eventInt(trackIndex: i32, event: Event) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `completeInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(&self, trackIndex: i32, loopCount: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `completeInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 136 | fn completeInt(trackIndex: i32, loopCount: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `startInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `startInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 137 | fn startInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] help: consider turning `endInt` into a method by giving it a `&self` argument [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(&self, trackIndex: i32); [INFO] [stdout] | ++++++ [INFO] [stdout] help: alternatively, consider constraining `endInt` so it does not apply to trait objects [INFO] [stdout] | [INFO] [stdout] 138 | fn endInt(trackIndex: i32) where Self: Sized; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.timelines` which is behind a mutable reference [INFO] [stdout] --> src/animation.rs:27:25 [INFO] [stdout] | [INFO] [stdout] 27 | for timeline in self.timelines { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `self.timelines` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.timelines` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `self.timelines` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/iter/traits/collect.rs:346:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 27 | for timeline in &self.timelines { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:49 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:63 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:35 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:47 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:61 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:30:43 [INFO] [stdout] | [INFO] [stdout] 30 | fn new_bounding_box_attachment(&self, skin: Skin, name: String) -> BoundingBoxAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:30:55 [INFO] [stdout] | [INFO] [stdout] 30 | fn new_bounding_box_attachment(&self, skin: Skin, name: String) -> BoundingBoxAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:34:39 [INFO] [stdout] | [INFO] [stdout] 34 | fn new_clipping_attachment(&self, skin: Skin, name: String) -> ClippingAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:34:51 [INFO] [stdout] | [INFO] [stdout] 34 | fn new_clipping_attachment(&self, skin: Skin, name: String) -> ClippingAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:38:35 [INFO] [stdout] | [INFO] [stdout] 38 | fn new_path_attachment(&self, skin: Skin, name: String) -> PathAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:38:47 [INFO] [stdout] | [INFO] [stdout] 38 | fn new_path_attachment(&self, skin: Skin, name: String) -> PathAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:42:36 [INFO] [stdout] | [INFO] [stdout] 42 | fn new_point_attachment(&self, skin: Skin, name: String) -> PointAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:42:48 [INFO] [stdout] | [INFO] [stdout] 42 | fn new_point_attachment(&self, skin: Skin, name: String) -> PointAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.timelines` which is behind a mutable reference [INFO] [stdout] --> src/animation.rs:27:25 [INFO] [stdout] | [INFO] [stdout] 27 | for timeline in self.timelines { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | `self.timelines` moved due to this implicit call to `.into_iter()` [INFO] [stdout] | move occurs because `self.timelines` has type `Vec>`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `self.timelines` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/iter/traits/collect.rs:346:18 [INFO] [stdout] help: consider iterating over a slice of the `Vec>`'s content to avoid moving into the `for` loop [INFO] [stdout] | [INFO] [stdout] 27 | for timeline in &self.timelines { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:37 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:49 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:22:63 [INFO] [stdout] | [INFO] [stdout] 22 | fn new_region_attachment(&self, skin: Skin, name: String, path: String) -> RegionAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:35 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:47 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `path` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:26:61 [INFO] [stdout] | [INFO] [stdout] 26 | fn new_mesh_attachment(&self, skin: Skin, name: String, path: String) -> MeshAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:30:43 [INFO] [stdout] | [INFO] [stdout] 30 | fn new_bounding_box_attachment(&self, skin: Skin, name: String) -> BoundingBoxAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:30:55 [INFO] [stdout] | [INFO] [stdout] 30 | fn new_bounding_box_attachment(&self, skin: Skin, name: String) -> BoundingBoxAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:34:39 [INFO] [stdout] | [INFO] [stdout] 34 | fn new_clipping_attachment(&self, skin: Skin, name: String) -> ClippingAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:34:51 [INFO] [stdout] | [INFO] [stdout] 34 | fn new_clipping_attachment(&self, skin: Skin, name: String) -> ClippingAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:38:35 [INFO] [stdout] | [INFO] [stdout] 38 | fn new_path_attachment(&self, skin: Skin, name: String) -> PathAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:38:47 [INFO] [stdout] | [INFO] [stdout] 38 | fn new_path_attachment(&self, skin: Skin, name: String) -> PathAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `skin` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:42:36 [INFO] [stdout] | [INFO] [stdout] 42 | fn new_point_attachment(&self, skin: Skin, name: String) -> PointAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_skin` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/attachments/atlas_attachment_loader.rs:42:48 [INFO] [stdout] | [INFO] [stdout] 42 | fn new_point_attachment(&self, skin: Skin, name: String) -> PointAttachment { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/skeleton.rs:63:21 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:61:44 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | ^^ immutable borrow occurs here [INFO] [stdout] 62 | } else { [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.bones` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:63:34 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] 62 | } else { [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ^^^^^^^ mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0381]: used binding `bone` is possibly-uninitialized [INFO] [stdout] --> src/skeleton.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 59 | let bone; [INFO] [stdout] | ---- binding declared here but left uninitialized [INFO] [stdout] 60 | if boneData.parent.is_none() { [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | ---- binding initialized here in some conditions [INFO] [stdout] ... [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ^^^^^ `bone` used here but it is possibly-uninitialized [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0506]: cannot assign to `bone` because it is borrowed [INFO] [stdout] --> src/skeleton.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ----- `bone` is borrowed here [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^^^ `bone` is assigned to here but it was already borrowed [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `bone` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `parent` [INFO] [stdout] --> src/skeleton.rs:65:48 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ---------- move occurs because `parent` has type `Option<&mut Bone<'_>>`, which does not implement the `Copy` trait [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ------ -------- `parent` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `parent` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:964:25 [INFO] [stdout] help: you could `clone` the value and consume it, if the `&mut Bone<'_>: Clone` trait bound could be satisfied [INFO] [stdout] | [INFO] [stdout] 64 | parent.clone().unwrap().children.push(&bone); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0499]: cannot borrow `i.bones` as mutable more than once at a time [INFO] [stdout] --> src/skeleton.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- first mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 67 | i.bones.push(bone); [INFO] [stdout] | ^^^^^^^ second mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.bones` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:71:24 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 71 | let bone = i.bones.get(slotData.boneData.index as usize); [INFO] [stdout] | ^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.slots` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 73 | i.slots.push(slot); [INFO] [stdout] | ^^^^^^^^----^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.drawOrder` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ^^^^^^^^^^^^----^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `slot` [INFO] [stdout] --> src/skeleton.rs:74:30 [INFO] [stdout] | [INFO] [stdout] 72 | let slot = Slot::new(slotData, bone.unwrap()); [INFO] [stdout] | ---- move occurs because `slot` has type `Slot<'_>`, which does not implement the `Copy` trait [INFO] [stdout] 73 | i.slots.push(slot); [INFO] [stdout] | ---- value moved here [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ^^^^^ value borrowed here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.ikConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 78 | i.ikConstraints.push(IkConstraint::new(ikConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:78:70 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 78 | i.ikConstraints.push(IkConstraint::new(ikConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.transformConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 82 | i.transformConstraints.push(TransformConstraint::new(transformConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:82:91 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 82 | i.transformConstraints.push(TransformConstraint::new(transformConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.pathConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 86 | i.pathConstraints.push(PathConstraint::new(pathConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:86:76 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 86 | i.pathConstraints.push(PathConstraint::new(pathConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0505]: cannot move out of `i` because it is borrowed [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] 33 | pub fn new(data: SkeletonData<'a>) -> Self { [INFO] [stdout] 34 | let mut i = Self { [INFO] [stdout] | ----- binding `i` declared here [INFO] [stdout] ... [INFO] [stdout] 58 | for boneData in &i.data.bones { [INFO] [stdout] | ------------- borrow of `i.data.bones` occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ [INFO] [stdout] | | [INFO] [stdout] | move out of `i` occurs here [INFO] [stdout] | returning this value requires that `i.data.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 58 | for boneData in &i.data.bones { [INFO] [stdout] | ------------- `i.data.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `slot` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ----- `slot` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `parent` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ------ `parent` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `bone` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ----- `bone` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- `i.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.slots` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 70 | for slotData in &i.data.slots { [INFO] [stdout] | ------------- `i.data.slots` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 71 | let bone = i.bones.get(slotData.boneData.index as usize); [INFO] [stdout] | ------- `i.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.ikConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 77 | for ikConstraintData in &i.data.ikConstraints { [INFO] [stdout] | --------------------- `i.data.ikConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.transformConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 81 | for transformConstraintData in &i.data.transformConstraints { [INFO] [stdout] | ---------------------------- `i.data.transformConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.pathConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 85 | for pathConstraintData in &i.data.pathConstraints { [INFO] [stdout] | ----------------------- `i.data.pathConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `boneName` [INFO] [stdout] --> src/skeleton.rs:92:21 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boneName` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `slotName` [INFO] [stdout] --> src/skeleton.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn findSlot(slotName: &String) -> Option<&Slot> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_slotName` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/skeleton.rs:63:21 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:61:44 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | ^^ immutable borrow occurs here [INFO] [stdout] 62 | } else { [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.bones` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:63:34 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] 62 | } else { [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ^^^^^^^ mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0381]: used binding `bone` is possibly-uninitialized [INFO] [stdout] --> src/skeleton.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 59 | let bone; [INFO] [stdout] | ---- binding declared here but left uninitialized [INFO] [stdout] 60 | if boneData.parent.is_none() { [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | ---- binding initialized here in some conditions [INFO] [stdout] ... [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ^^^^^ `bone` used here but it is possibly-uninitialized [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0506]: cannot assign to `bone` because it is borrowed [INFO] [stdout] --> src/skeleton.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ----- `bone` is borrowed here [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^^^ `bone` is assigned to here but it was already borrowed [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `bone` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `parent` [INFO] [stdout] --> src/skeleton.rs:65:48 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ---------- move occurs because `parent` has type `Option<&mut Bone<'_>>`, which does not implement the `Copy` trait [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ------ -------- `parent` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | help: consider calling `.as_ref()` or `.as_mut()` to borrow the type's contents [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: `Option::::unwrap` takes ownership of the receiver `self`, which moves `parent` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/option.rs:964:25 [INFO] [stdout] help: you could `clone` the value and consume it, if the `&mut Bone<'_>: Clone` trait bound could be satisfied [INFO] [stdout] | [INFO] [stdout] 64 | parent.clone().unwrap().children.push(&bone); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0499]: cannot borrow `i.bones` as mutable more than once at a time [INFO] [stdout] --> src/skeleton.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- first mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 67 | i.bones.push(bone); [INFO] [stdout] | ^^^^^^^ second mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.bones` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:71:24 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] ... [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 71 | let bone = i.bones.get(slotData.boneData.index as usize); [INFO] [stdout] | ^^^^^^^ immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | - returning this value requires that `i.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.slots` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:73:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 73 | i.slots.push(slot); [INFO] [stdout] | ^^^^^^^^----^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.drawOrder` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ^^^^^^^^^^^^----^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `slot` [INFO] [stdout] --> src/skeleton.rs:74:30 [INFO] [stdout] | [INFO] [stdout] 72 | let slot = Slot::new(slotData, bone.unwrap()); [INFO] [stdout] | ---- move occurs because `slot` has type `Slot<'_>`, which does not implement the `Copy` trait [INFO] [stdout] 73 | i.slots.push(slot); [INFO] [stdout] | ---- value moved here [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ^^^^^ value borrowed here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.ikConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:78:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 78 | i.ikConstraints.push(IkConstraint::new(ikConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:78:70 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 78 | i.ikConstraints.push(IkConstraint::new(ikConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.transformConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:82:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 82 | i.transformConstraints.push(TransformConstraint::new(transformConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:82:91 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 82 | i.transformConstraints.push(TransformConstraint::new(transformConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i.pathConstraints` as mutable because it is also borrowed as immutable [INFO] [stdout] --> src/skeleton.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 61 | bone = Bone::new(boneData, &i, None); [INFO] [stdout] | -- immutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 86 | i.pathConstraints.push(PathConstraint::new(pathConstraintData, &i)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | [INFO] [stdout] | | immutable borrow later used by call [INFO] [stdout] | mutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0502]: cannot borrow `i` as immutable because it is also borrowed as mutable [INFO] [stdout] --> src/skeleton.rs:86:76 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- mutable borrow occurs here [INFO] [stdout] ... [INFO] [stdout] 86 | i.pathConstraints.push(PathConstraint::new(pathConstraintData, &i)); [INFO] [stdout] | ---- mutable borrow later used by call ^^ immutable borrow occurs here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0505]: cannot move out of `i` because it is borrowed [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 32 | impl<'a> Skeleton<'a> { [INFO] [stdout] | -- lifetime `'a` defined here [INFO] [stdout] 33 | pub fn new(data: SkeletonData<'a>) -> Self { [INFO] [stdout] 34 | let mut i = Self { [INFO] [stdout] | ----- binding `i` declared here [INFO] [stdout] ... [INFO] [stdout] 58 | for boneData in &i.data.bones { [INFO] [stdout] | ------------- borrow of `i.data.bones` occurs here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ [INFO] [stdout] | | [INFO] [stdout] | move out of `i` occurs here [INFO] [stdout] | returning this value requires that `i.data.bones` is borrowed for `'a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 58 | for boneData in &i.data.bones { [INFO] [stdout] | ------------- `i.data.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `slot` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 74 | i.drawOrder.push(&slot); [INFO] [stdout] | ----- `slot` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `parent` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 65 | bone = Bone::new(boneData, &i, parent.as_deref()); [INFO] [stdout] | ------ `parent` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local variable `bone` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 64 | parent.unwrap().children.push(&bone); [INFO] [stdout] | ----- `bone` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 63 | let mut parent = i.bones.get_mut(boneData.parent.unwrap().index as usize); [INFO] [stdout] | ------- `i.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.slots` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 70 | for slotData in &i.data.slots { [INFO] [stdout] | ------------- `i.data.slots` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.bones` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 71 | let bone = i.bones.get(slotData.boneData.index as usize); [INFO] [stdout] | ------- `i.bones` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.ikConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 77 | for ikConstraintData in &i.data.ikConstraints { [INFO] [stdout] | --------------------- `i.data.ikConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.transformConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 81 | for transformConstraintData in &i.data.transformConstraints { [INFO] [stdout] | ---------------------------- `i.data.transformConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0515]: cannot return value referencing local data `i.data.pathConstraints` [INFO] [stdout] --> src/skeleton.rs:89:16 [INFO] [stdout] | [INFO] [stdout] 85 | for pathConstraintData in &i.data.pathConstraints { [INFO] [stdout] | ----------------------- `i.data.pathConstraints` is borrowed here [INFO] [stdout] ... [INFO] [stdout] 89 | return i; [INFO] [stdout] | ^ returns a value referencing data owned by the current function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `boneName` [INFO] [stdout] --> src/skeleton.rs:92:21 [INFO] [stdout] | [INFO] [stdout] 92 | pub fn findBone(boneName: &String) -> Option<&Bone> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boneName` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `slotName` [INFO] [stdout] --> src/skeleton.rs:96:21 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn findSlot(slotName: &String) -> Option<&Slot> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_slotName` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/utils/skeleton_input.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | for mut i in 0..char_count { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:91:21 [INFO] [stdout] | [INFO] [stdout] 91 | i += 2; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:100:21 [INFO] [stdout] | [INFO] [stdout] 100 | i += 3; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | i += 1; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/utils/skeleton_input.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let mut b = self.read_byte(); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 49 previous errors; 24 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0038, E0106, E0277, E0308, E0381, E0382, E0412, E0499, E0502... [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0038`. [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/utils/skeleton_input.rs:85:17 [INFO] [stdout] | [INFO] [stdout] 85 | for mut i in 0..char_count { [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:91:21 [INFO] [stdout] | [INFO] [stdout] 91 | i += 2; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:100:21 [INFO] [stdout] | [INFO] [stdout] 100 | i += 3; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `i` is never read [INFO] [stdout] --> src/utils/skeleton_input.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | i += 1; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/utils/skeleton_input.rs:86:17 [INFO] [stdout] | [INFO] [stdout] 86 | let mut b = self.read_byte(); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `RustySpine` (lib) due to 50 previous errors; 24 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: aborting due to 49 previous errors; 24 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0038, E0106, E0277, E0308, E0381, E0382, E0412, E0499, E0502... [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0038`. [INFO] [stdout] [INFO] [stderr] error: could not compile `RustySpine` (lib test) due to 50 previous errors; 24 warnings emitted [INFO] running `Command { std: "docker" "inspect" "37490ce3f6dd101775f9d83aa7a6cdab50429e69a5e63a6ba756c0ed4445e8d7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "37490ce3f6dd101775f9d83aa7a6cdab50429e69a5e63a6ba756c0ed4445e8d7", kill_on_drop: false }` [INFO] [stdout] 37490ce3f6dd101775f9d83aa7a6cdab50429e69a5e63a6ba756c0ed4445e8d7