Digamos que eu tenho o seguinte snippet ( 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);
}
Como A
não é nem Clone
nem Copy
, eu assumiria que o valor de GLOBAL_A
seria movido. Isso não faz muito sentido para uma const e, como mostrado, não pode ser o caso, pois pode ser "movido" duas vezes.
Quais são as regras que permitem que o snippet acima funcione considerando que A
não é Clone
nem Copy
?