假设我有以下片段(playground)
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
的值会被移动.这对一个常量来说没有多大意义,如图所示,无论如何都不可能是这样,因为它可以"移动"两次.
考虑到A
不是Clone
也不是Copy
,允许上述代码段工作的规则是什么?