3 ms·
No locking (which provides mutable `Sync` in rust terms) is generally required, but things must be Send (i.e., allowed to move between threads, but not shared).
by necubi 3y ago
No locking (which provides mutable `Sync` in rust terms) is generally required, but things must be Send (i.e., allowed to move between threads, but not shared). In my experience is mostly an issue when dealing with references, because `&T` is only Send if `T` is sync.
However, `&mut T` is Send if `T` is Send. So if you can avoid aliasing your references, you're also ok.
- weinzierl 3y agoThanks! So does that mean that if I write my code with default tokio and ARC where required and then when I add flavor = "current_thread" I can replace my ARC with Rc?
- the_white_oak 3y agoRc is not Send. But you can use tokio's LocalSet to run non-Send futures. https://docs.rs/tokio/latest/tokio/task/struct.LocalSet.html https://docs.rs/tokio/latest/tokio/task/struct.LocalSet.html