Powiedz, że mam następujący fragment kodu ( plac zabaw )
struct A {
pub val: u32
}
const GLOBAL_A: A = A {val: 2};
fn main() {
let some_a: A = GLOBAL_A;
let other_a: A = GLOBAL_A;
println!("double val = {}", some_a.val + other_a.val);
}
Ponieważ A
ani Clone
nie jest Copy
, ani nie założyłbym , że wartość GLOBAL_A
zostanie przeniesiona. Nie ma to większego sensu dla stałej i jak pokazano, nie może tak być, ponieważ można ją dwukrotnie „przesunąć”.
Jakie reguły zezwalają na działanie powyższego fragmentu, biorąc pod uwagę, że A
nie jest nim Clone
ani Copy
?