我正在学习Rust,试图找出std::marker::Sync
特征。 Sync
的文档从以下(版本1.1)开始,强调我的:
别名时,可以在线程之间安全共享的类型。
准确的定义是:如果
T
是线程安全的,则Sync
类型为&T
。换句话说,在线程之间传递&T
引用时,不可能发生数据争用。正如人们所料,
u8
和f64
等基本类型都是Sync
,包含它们的简单聚合类型(如元组,结构和枚举)也是如此。 ...
从第一句话开始,这对我来说毫无意义。我认为别名与语句有关:
type Name = String;
这与同步有什么关系?也许术语“别名”在这里重载,我错过了第二个含义,但我在文档中的任何地方都找不到第二种别名。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
如果存在多个别名,则称该值为别名。别名只是一个名字。
在此代码中:
let s1: String = "hello".into();
let s2: &String = &s1;
s1
和s2
是具有相同String
值的别名;因此,String
是别名。