在 所有權規則 那篇中,談到了
let hello = "Hello World".to_string()
let hello2 = hello;
在 Ownership 規則之下, hello 所持有的 Value 被移轉給 hello2,因此 hello 之後無法被使用。
這種規則可以止諸如 Dangling pointer, Use After Free 等。但想阻止這些情況除了 Move,其實也可以選擇複製。
let hello2 = hello.clone();
使用 clone 的話,hello 與 hello2 就各自持有單獨的一份 "Hello World"
此外對於一些基礎型別(如整數,浮點數)來說,它們在使用 = 時,行為就不是 Move
而是 Clone
let value = 123;
let value2 = value;
println!("{} {}", value, value2);
// value, value2 都有效
在 Rust 中,支援 Clone 的型別就有 clone 可用,支援 Copy 的型別遇到 =
時就是使用 clone。







