error[E0277]: `RefCell` cannot be shared between threads safely --> tests/compile-fail/non-sync.rs:10:17 | 10 | impl Plugin for MyPlugin { | ^^^^^^^^ `RefCell` cannot be shared between threads safely | = help: within `MyPlugin`, the trait `Sync` is not implemented for `RefCell`, which is required by `MyPlugin: Sync` = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead note: required because it appears within the type `MyPlugin` --> tests/compile-fail/non-sync.rs:6:12 | 6 | pub struct MyPlugin { | ^^^^^^^^ note: required by a bound in `Plugin` --> src/plugins.rs | | pub trait Plugin: Send + Sync + UnwindSafe + RefUnwindSafe { | ^^^^ required by this bound in `Plugin` error[E0277]: the type `UnsafeCell` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary --> tests/compile-fail/non-sync.rs:10:17 | 10 | impl Plugin for MyPlugin { | ^^^^^^^^ `UnsafeCell` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary | = help: within `MyPlugin`, the trait `RefUnwindSafe` is not implemented for `UnsafeCell`, which is required by `MyPlugin: RefUnwindSafe` note: required because it appears within the type `RefCell` --> $RUST/core/src/cell.rs | | pub struct RefCell { | ^^^^^^^ note: required because it appears within the type `MyPlugin` --> tests/compile-fail/non-sync.rs:6:12 | 6 | pub struct MyPlugin { | ^^^^^^^^ note: required by a bound in `Plugin` --> src/plugins.rs | | pub trait Plugin: Send + Sync + UnwindSafe + RefUnwindSafe { | ^^^^^^^^^^^^^ required by this bound in `Plugin` error[E0277]: the type `UnsafeCell` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary --> tests/compile-fail/non-sync.rs:10:17 | 10 | impl Plugin for MyPlugin { | ^^^^^^^^ `UnsafeCell` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary | = help: within `MyPlugin`, the trait `RefUnwindSafe` is not implemented for `UnsafeCell`, which is required by `MyPlugin: RefUnwindSafe` note: required because it appears within the type `Cell` --> $RUST/core/src/cell.rs | | pub struct Cell { | ^^^^ note: required because it appears within the type `RefCell` --> $RUST/core/src/cell.rs | | pub struct RefCell { | ^^^^^^^ note: required because it appears within the type `MyPlugin` --> tests/compile-fail/non-sync.rs:6:12 | 6 | pub struct MyPlugin { | ^^^^^^^^ note: required by a bound in `Plugin` --> src/plugins.rs | | pub trait Plugin: Send + Sync + UnwindSafe + RefUnwindSafe { | ^^^^^^^^^^^^^ required by this bound in `Plugin`