[INFO] fetching crate autd3capi-driver 29.0.0-rc.10...
[INFO] checking autd3capi-driver-29.0.0-rc.10 against master#39cb3386ddc6c71657418be28dbb3987eea4aa4b for pr-133536
[INFO] extracting crate autd3capi-driver 29.0.0-rc.10 into /workspace/builds/worker-2-tc1/source
[INFO] validating manifest of crates.io crate autd3capi-driver 29.0.0-rc.10 on toolchain 39cb3386ddc6c71657418be28dbb3987eea4aa4b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate autd3capi-driver 29.0.0-rc.10
[INFO] finished tweaking crates.io crate autd3capi-driver 29.0.0-rc.10
[INFO] tweaked toml for crates.io crate autd3capi-driver 29.0.0-rc.10 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 105 packages to latest compatible versions
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded autd3-derive v29.0.0-rc.10
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.11
[INFO] [stderr]   Downloaded autd3 v29.0.0-rc.10
[INFO] [stderr]   Downloaded bitfield-struct v0.9.2
[INFO] [stderr]   Downloaded derive-new v0.7.0
[INFO] [stderr]   Downloaded autd3-driver v29.0.0-rc.10
[INFO] [stderr]   Downloaded async-ffi v0.5.0
[INFO] [stderr]   Downloaded autd3-firmware-emulator v29.0.0-rc.10
[INFO] [stderr]   Downloaded spin_sleep v1.2.1
[INFO] [stderr]   Downloaded tynm v0.1.10
[INFO] [stderr]   Downloaded zerocopy v0.8.11
[INFO] [stderr]   Downloaded bvh v0.10.0
[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:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] daa531ba55f976e0c7cb9d928fb278491b2b747b10683713b1ce291e24cb05ef
[INFO] running `Command { std: "docker" "start" "-a" "daa531ba55f976e0c7cb9d928fb278491b2b747b10683713b1ce291e24cb05ef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "daa531ba55f976e0c7cb9d928fb278491b2b747b10683713b1ce291e24cb05ef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "daa531ba55f976e0c7cb9d928fb278491b2b747b10683713b1ce291e24cb05ef", kill_on_drop: false }`
[INFO] [stdout] daa531ba55f976e0c7cb9d928fb278491b2b747b10683713b1ce291e24cb05ef
[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:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3cd416eeb70d8c79cdc97b489c2f8131284ab05cac930f40edaa53ebad25226f
[INFO] running `Command { std: "docker" "start" "-a" "3cd416eeb70d8c79cdc97b489c2f8131284ab05cac930f40edaa53ebad25226f", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.215
[INFO] [stderr]     Checking bytemuck v1.20.0
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling thiserror v2.0.3
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling matrixmultiply v0.3.9
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling syn v2.0.90
[INFO] [stderr]    Compiling zerocopy v0.8.11
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling seq-macro v0.3.5
[INFO] [stderr]     Checking tokio v1.41.1
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking safe_arch v0.7.2
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking spin_sleep v1.2.1
[INFO] [stderr]     Checking async-ffi v0.5.0
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking wide v0.7.30
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking tynm v0.1.10
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling serde_derive v1.0.215
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling nalgebra-macros v0.2.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.11
[INFO] [stderr]    Compiling thiserror-impl v2.0.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling derive_more-impl v1.0.0
[INFO] [stderr]    Compiling derive-new v0.7.0
[INFO] [stderr]    Compiling bitfield-struct v0.9.2
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling autd3-derive v29.0.0-rc.10
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking derive_more v1.0.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking simba v0.9.0
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking nalgebra v0.33.2
[INFO] [stderr]     Checking bvh v0.10.0
[INFO] [stderr]     Checking autd3-driver v29.0.0-rc.10
[INFO] [stderr]     Checking autd3-firmware-emulator v29.0.0-rc.10
[INFO] [stderr]     Checking autd3 v29.0.0-rc.10
[INFO] [stderr]     Checking autd3capi-driver v29.0.0-rc.10 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `autd3_driver::async_trait`
[INFO] [stdout]   --> src/ptr/link_sync.rs:2:5
[INFO] [stdout]    |
[INFO] [stdout] 2  |     async_trait,
[INFO] [stdout]    |     ^^^^^^^^^^^ no `async_trait` in the root
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:13:22
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] note: the item is gated behind the `async-trait` feature
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "async-trait")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `autd3_driver`
[INFO] [stdout]   --> src/ptr/link.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 | #[autd3_driver::async_trait]
[INFO] [stdout]    |                 ^^^^^^^^^^^ could not find `async_trait` in `autd3_driver`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:13:22
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] note: the item is gated behind the `async-trait` feature
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "async-trait")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `autd3_driver::async_trait`
[INFO] [stdout]   --> src/ptr/link_sync.rs:2:5
[INFO] [stdout]    |
[INFO] [stdout] 2  |     async_trait,
[INFO] [stdout]    |     ^^^^^^^^^^^ no `async_trait` in the root
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:13:22
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] note: the item is gated behind the `async-trait` feature
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "async-trait")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: could not find `async_trait` in `autd3_driver`
[INFO] [stdout]   --> src/ptr/link.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 | #[autd3_driver::async_trait]
[INFO] [stdout]    |                 ^^^^^^^^^^^ could not find `async_trait` in `autd3_driver`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:13:22
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use async_trait::async_trait;
[INFO] [stdout]    |                      ^^^^^^^^^^^
[INFO] [stdout] note: the item is gated behind the `async-trait` feature
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/lib.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[cfg(feature = "async-trait")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/controller.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/controller.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/controller.rs:10:41
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    |                                         ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/controller.rs:10:41
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    |                                         ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:38:14
[INFO] [stdout]    |
[INFO] [stdout] 38 |         impl From<$type> for $name {
[INFO] [stdout]    |              ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:44:68
[INFO] [stdout]    |
[INFO] [stdout] 44 |         Box<dyn FnOnce(&Geometry) -> BorrowingFfiFuture<Result<Box<dyn Link>, AUTDInternalError>>>,
[INFO] [stdout]    |                                                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:44:68
[INFO] [stdout]    |
[INFO] [stdout] 44 |         Box<dyn FnOnce(&Geometry) -> BorrowingFfiFuture<Result<Box<dyn Link>, AUTDInternalError>>>,
[INFO] [stdout]    |                                                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]    --> src/ptr/link.rs:81:14
[INFO] [stdout]     |
[INFO] [stdout] 81  |     type L = Box<dyn Link>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the following other types implement trait `Link`:
[INFO] [stdout]               Audit
[INFO] [stdout]               Nop
[INFO] [stdout]               SyncLink<T>
[INFO] [stdout] note: required by a bound in `autd3_driver::link::LinkBuilder::L`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |         type L: Link;
[INFO] [stdout]     |                 ^^^^ required by this bound in `LinkBuilder::L`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<(dyn Link + 'static)>: Link` is not satisfied
[INFO] [stdout]    --> src/ptr/link.rs:81:14
[INFO] [stdout]     |
[INFO] [stdout] 81  |     type L = Box<dyn Link>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<(dyn Link + 'static)>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the following other types implement trait `Link`:
[INFO] [stdout]               Audit
[INFO] [stdout]               Nop
[INFO] [stdout]               SyncLink<T>
[INFO] [stdout] note: required by a bound in `autd3_driver::link::LinkBuilder::L`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:100:17
[INFO] [stdout]     |
[INFO] [stdout] 100 |         type L: Link;
[INFO] [stdout]     |                 ^^^^ required by this bound in `LinkBuilder::L`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    |                        ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    |                        ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:46:32
[INFO] [stdout]    |
[INFO] [stdout] 46 |             fn deref(&self) -> &Self::Target {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:81:18
[INFO] [stdout]    |
[INFO] [stdout] 81 |     type L = Box<dyn Link>;
[INFO] [stdout]    |                  ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |             fn deref_mut(&mut self) -> &mut Self::Target {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:81:18
[INFO] [stdout]    |
[INFO] [stdout] 81 |     type L = Box<dyn Link>;
[INFO] [stdout]    |                  ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |         (self.gen)(geometry).await
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 |         (self.gen)(geometry).await
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:84:30
[INFO] [stdout]    |
[INFO] [stdout] 84 |         (self.gen)(geometry).await
[INFO] [stdout]    |                              ^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:84:30
[INFO] [stdout]    |
[INFO] [stdout] 84 |         (self.gen)(geometry).await
[INFO] [stdout]    |                              ^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     async fn open(self, geometry: &Geometry) -> Result<Self::L, AUTDInternalError> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     async fn open(self, geometry: &Geometry) -> Result<Self::L, AUTDInternalError> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Box<dyn Link>: Link` is not satisfied
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Link` is not implemented for `Box<dyn Link>`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = help: the following other types implement trait `Link`:
[INFO] [stdout]              Audit
[INFO] [stdout]              Nop
[INFO] [stdout]              SyncLink<T>
[INFO] [stdout] note: required by a bound in `Controller`
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-29.0.0-rc.10/src/controller/mod.rs:31:26
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Controller<L: Link> {
[INFO] [stdout]    |                          ^^^^ required by this bound in `Controller`
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/controller.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl_ptr!(ControllerPtr, Controller<Box<dyn Link>>);
[INFO] [stdout]    | --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                                    ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:40:22
[INFO] [stdout]    |
[INFO] [stdout] 40 |                 Self(Box::into_raw(Box::new(v)) as _)
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:37
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:47:26
[INFO] [stdout]    |
[INFO] [stdout] 47 |                 unsafe { (self.0 as *const $type).as_ref().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                                     ^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/mod.rs:53:26
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 unsafe { (self.0 as *mut $type).as_mut().unwrap() }
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/ptr/link.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl_ptr!(LinkPtr, Box<dyn Link>);
[INFO] [stdout]    | --------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: this error originates in the macro `impl_ptr` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:26:24
[INFO] [stdout]    |
[INFO] [stdout] 26 |             (self.0 as *const Box<dyn Link> as *const Box<T>)
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:26:24
[INFO] [stdout]    |
[INFO] [stdout] 26 |             (self.0 as *const Box<dyn Link> as *const Box<T>)
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:34:24
[INFO] [stdout]    |
[INFO] [stdout] 34 |             (self.0 as *mut Box<dyn Link> as *mut Box<T>)
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:34:24
[INFO] [stdout]    |
[INFO] [stdout] 34 |             (self.0 as *mut Box<dyn Link> as *mut Box<T>)
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 56 |               gen: Box::new(move |geometry| {
[INFO] [stdout]    |  __________________^
[INFO] [stdout] 57 | |                 BorrowingFfiFuture::new(async move {
[INFO] [stdout] 58 | |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout] 59 | |                         match builder.open(geometry).await {
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |                 })
[INFO] [stdout] 65 | |             }),
[INFO] [stdout]    | |______________^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 56 |               gen: Box::new(move |geometry| {
[INFO] [stdout]    |  __________________^
[INFO] [stdout] 57 | |                 BorrowingFfiFuture::new(async move {
[INFO] [stdout] 58 | |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout] 59 | |                         match builder.open(geometry).await {
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |                 })
[INFO] [stdout] 65 | |             }),
[INFO] [stdout]    | |______________^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:41
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                   ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: required for the cast from `Box<<B as LinkBuilder>::L>` to `Box<dyn Link>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:41
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                   ^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout]    = note: required for the cast from `Box<<B as LinkBuilder>::L>` to `Box<dyn Link>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:38
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                ^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:38
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                ^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:38
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:60:38
[INFO] [stdout]    |
[INFO] [stdout] 60 | ...                   Ok(v) => Ok(Box::new(v)),
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:61:39
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...                   Err(e) => Err(e),
[INFO] [stdout]    |                                 ^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:61:39
[INFO] [stdout]    |
[INFO] [stdout] 61 | ...                   Err(e) => Err(e),
[INFO] [stdout]    |                                 ^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 BorrowingFfiFuture::new(async move {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 BorrowingFfiFuture::new(async move {
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 | /                 BorrowingFfiFuture::new(async move {
[INFO] [stdout] 58 | |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout] 59 | |                         match builder.open(geometry).await {
[INFO] [stdout] 60 | |                             Ok(v) => Ok(Box::new(v)),
[INFO] [stdout] ...  |
[INFO] [stdout] 63 | |                     r
[INFO] [stdout] 64 | |                 })
[INFO] [stdout]    | |__________________^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0038]: the trait `Link` cannot be made into an object
[INFO] [stdout]   --> src/ptr/link.rs:57:17
[INFO] [stdout]    |
[INFO] [stdout] 57 | /                 BorrowingFfiFuture::new(async move {
[INFO] [stdout] 58 | |                     let r: Result<Box<dyn Link>, AUTDInternalError> =
[INFO] [stdout] 59 | |                         match builder.open(geometry).await {
[INFO] [stdout] 60 | |                             Ok(v) => Ok(Box::new(v)),
[INFO] [stdout] ...  |
[INFO] [stdout] 63 | |                     r
[INFO] [stdout] 64 | |                 })
[INFO] [stdout]    | |__________________^ `Link` cannot be made into an object
[INFO] [stdout]    |
[INFO] [stdout] note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
[INFO] [stdout]   --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/autd3-driver-29.0.0-rc.10/src/link.rs:74:32
[INFO] [stdout]    |
[INFO] [stdout] 74 |         fn close(&mut self) -> impl std::future::Future<Output = Result<(), AUTDInternalError>>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `close` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 79 |         ) -> impl std::future::Future<Output = Result<(), AUTDInternalError>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `update` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 86 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `send` references an `impl Trait` type in its return type
[INFO] [stdout] ...
[INFO] [stdout] 91 |         ) -> impl std::future::Future<Output = Result<bool, AUTDInternalError>>;
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait cannot be made into an object because method `receive` references an `impl Trait` type in its return type
[INFO] [stdout]    = help: the following types implement the trait, consider defining an enum where each variant holds one of these types, implementing `Link` for this new enum and using it instead:
[INFO] [stdout]              autd3::link::Audit
[INFO] [stdout]              autd3::link::Nop
[INFO] [stdout]              ptr::link_sync::SyncLink<T>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0038, E0277, E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0038`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `autd3capi-driver` (lib test) due to 55 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `autd3capi-driver` (lib) due to 55 previous errors
[INFO] running `Command { std: "docker" "inspect" "3cd416eeb70d8c79cdc97b489c2f8131284ab05cac930f40edaa53ebad25226f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3cd416eeb70d8c79cdc97b489c2f8131284ab05cac930f40edaa53ebad25226f", kill_on_drop: false }`
[INFO] [stdout] 3cd416eeb70d8c79cdc97b489c2f8131284ab05cac930f40edaa53ebad25226f
