【发布时间】:2018-09-29 06:48:14
【问题描述】:
在section on ownership in The Rust Programming Language 中,Strings 表示为具有 3 个字段的结构(其中 3 个字段之一是指向实际字节向量的指针)。有一个例子:
let s1 = String::from("hello");
let s2 = s1;
这本书解释为将s1中包含的3字段结构复制到s2(但不是字节向量),然后将s1中包含的结构标记为“无效”(图4-4 )。
为什么它以这种方式呈现,而不是将s2 呈现为指向与s1 相同的顶级结构,然后将s1 标记为“无效”?
这种替代表示会导致语义上的明显差异(或者甚至会导致问题)吗?如果不是,是不是因为它更好地反映了底层实现?如果是这样,为什么实现会进行这样的复制操作?
【问题讨论】: