Send 和 Sync

How does Rust know to forbid shared access across threads? The answer is in two traits:

  • Send:如果跨线程边界移动 T 是安全的,则类型 TSend
  • Sync:如果跨线程边界移动 &T 是安全的,则类型 TSync

SendSync 均为不安全特征。只要类型仅包含 SendSync 类型,编译器就会自动为类型派生 这两种特征。你也可以手动实现它们(如果你确定这样 有效的话)。

  • 不妨将这些特征视为类型包含某些线程安全属性的标记。
  • 它们可以在泛型约束中作为常规特征使用。