Díky za upozornění. Asi jsem to napsal nejasně, ale myslel jsem to tak, že funkčnost není zaručena v obecném případě (bez ohledu na jazyk), proto to je v Rustu řešeno.
A ano, v Rustu by to z normálním počitadlem referencí nešlo přeložit. Asi to doplním aspoň sem do diskuze, co by se stalo při náhradě Arc za "normální" Rc:
error[E0277]: the trait bound `std::rc::Rc<Complex>: std::marker::Send` is not satisfied
--> test.rs:52:9
|
52 | thread::spawn(move || {
| ^^^^^^^^^^^^^
|
= note: `std::rc::Rc<Complex>` cannot be sent between threads safely
= note: required because it appears within the type `ComplexNumberOwner`
= note: required because it appears within the type `[closure@test.rs:52:23: 55:10 owner:ComplexNumberOwner]`
= note: required by `std::thread::spawn`