为什么允许以下代码段中的赋值?
#[derive(Copy, Clone)]
pub struct X {
pub a: u8,
}
fn main() {
let x = X { a: 0 };
{ x }.a = 5;
assert!(x.a == 5); // I was wrong
}
我是否分配给临时工?
尽管这些是禁止的:
({ x.a }) = 5;
let mut y: u8 = 0;
({ y }) = 5;
我问,因为我有一只虫子
unsafe { *some_struct }.mem1 = 5;
我没有使用
unsafe { *some_struct.mem1 = 5; }
从一开始,因为让不安全的区块尽可能短是正确的.