“别名”对于“同步”特征意味着什么?

时间:2015-07-03 23:14:40

标签: rust

我正在学习Rust,试图找出std::marker::Sync特征。 Sync的文档从以下(版本1.1)开始,强调我的:

  

别名时,可以在线程之间安全共享的类型。

     

准确的定义是:如果T是线程安全的,则Sync类型为&T。换句话说,在线程之间传递&T引用时,不可能发生数据争用。

     

正如人们所料,u8f64等基本类型都是Sync,包含它们的简单聚合类型(如元组,结构和枚举)也是如此。 ...

从第一句话开始,这对我来说毫无意义。我认为别名与语句有关:

type Name = String;

这与同步有什么关系?也许术语“别名”在这里重载,我错过了第二个含义,但我在文档中的任何地方都找不到第二种别名。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

如果存在多个别名,则称该值为别名。别名只是一个名字。

在此代码中:

let s1: String = "hello".into();
let s2: &String = &s1;

s1s2是具有相同String值的别名;因此,String是别名。