Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 为什么我可以定义未使用的可变&;同时使用不可变引用?_Rust - Fatal编程技术网

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 = &

Rust不允许同时使用可变引用和不可变引用。但可以编译并运行以下代码:

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);
}
使以后不再使用的引用无效是合理的,这是可以理解和方便的

我的问题是,这是否意味着无用的变量或结构将提前删除,而不是有时直到范围结束?编译器是否总是保证“结构或变量一定会在作用域的末尾删除”

这是否意味着无用的变量或结构将提前删除,而不是有时直到范围结束

不,缩短的是借用

编译器是否总是保证“结构或变量一定会在作用域的末尾删除”