在鏽病0.8:鏽:使用部分地移動值
struct TwoStr {
one: ~str,
two: ~str,
}
#[test]
fn test_contents() {
let strs = TwoStr {
one: ~"pillar",
two: ~"post",
};
assert_eq!(strs.one, ~"pillar");
assert_eq!(strs.two, ~"post");
}
代碼甚至不會編譯。該rust test
認爲在第二assert_eq
有一個錯誤:
error: use of partially moved value:
strs
這是有點反直覺。我的意思是,無論第一個assert_eq
可能具有的效果如何,當執行次數達到第二個assert_eq
時,它應該超出範圍。當然,除非在場景後面出現一些東西。可以?
如果沒有,爲什麼這個神祕的錯誤?希望我對Rust指針的理解沒有根本的缺陷。