Rust 为什么我可以定义未使用的可变&;同时使用不可变引用?
Rust不允许同时使用可变引用和不可变引用。但可以编译并运行以下代码:Rust 为什么我可以定义未使用的可变&;同时使用不可变引用?,rust,Rust,Rust不允许同时使用可变引用和不可变引用。但可以编译并运行以下代码: struct MyStruct { inner: i32, } fn main() { let mut obj = MyStruct { inner: 0 }; println!("{:#?}", obj.inner); let a = &obj; println!("{}", a.inner); let b = &
struct MyStruct {
inner: i32,
}
fn main() {
let mut obj = MyStruct { inner: 0 };
println!("{:#?}", obj.inner);
let a = &obj;
println!("{}", a.inner);
let b = &mut obj;
println!("{}", b.inner);
// Compile error only when have this line:
// println!("{}", a.inner);
}
使以后不再使用的引用无效是合理的,这是可以理解和方便的
我的问题是,这是否意味着无用的变量或结构将提前删除,而不是有时直到范围结束?编译器是否总是保证“结构或变量一定会在作用域的末尾删除”
这是否意味着无用的变量或结构将提前删除,而不是有时直到范围结束
不,缩短的是借用
编译器是否总是保证“结构或变量一定会在作用域的末尾删除”
对