В Rust 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
. Если, конечно, он не появляется за сценой. Имеет ли это?
Если нет, то почему эта загадочная ошибка? Надеюсь, нет никаких фундаментальных недостатков в моем понимании указателей ржавчины.