pub unsafe auto trait Send { }
可以跨线程边界传输的类型。
当编译器确定适当时,会自动实现此 trait。
非 Send 类型的一个示例是引用计数指针 rc::Rc。 如果两个线程试图克隆指向相同引用计数值的 Rc,它们可能会同时尝试更新引用计数,这是 未定义行为 因为 Rc 不使用原子操作。
Send
rc::Rc
Rc
它的表亲 sync::Arc 确实使用原子操作 (产生一些开销),因此它是 Send。
sync::Arc
有关更多详细信息,请参见 the Nomicon。
NonNull 指针不是 Send,因为它们引用的数据可能是别名的。
NonNull