理论

简单讲一下,看不懂的网上其他文章都有的,有更详细的,easy的很。我只说通俗易懂的。

  • Send: 变量可以在线程之间移动。说白了就是move语义,说的是变量可以通过move语义可以在线程之间传递。
  • Sync: 变量可以同一时间内在多个线程之间共享。说白了就是引用,变量的引用可以同时出现在多个线程内部。

实践

我们现在通过例子来一一实践刚才的理论。我们接下来通过四个例子,来检验一下针对Send与Sync的理论。

例子一: 编译器自动推导

如下代码是可以正常执行的,rust自有类型中,有很多已经实现了Send trait的类型。
结论:如果复合类型中的所有类型都实现了Send trait。那么编译器自动推导这个符合类型也实现了Send trait。

#[derive(Debug)]struct Abc { name: u32,}