Скажем, у меня есть следующий фрагмент ( детская площадка )
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);
}
Поскольку A
это ни то, Clone
ни другое Copy
, я бы предположил, что значение GLOBAL_A
будет перемещено. Это не имеет большого смысла для const и, как показано, не может иметь место в любом случае, так как его можно «перемещать» дважды.
Какие правила, которые позволяют вышеупомянутому фрагменту, работают, рассматривая A
, не, Clone
ни Copy
?