Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/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_Borrowing - Fatal编程技术网

Rust 分配给借用的变量如何违反引用规则?

Rust 分配给借用的变量如何违反引用规则?,rust,borrowing,Rust,Borrowing,我有以下代码: struct Foo<'a> { link: &'a i32, } fn main() { let mut x = 33; println!("x:{}", x); let ff = Foo { link: &x }; x = 22; } 铁锈书只有两条规则: 对资源的一个或多个引用(&T) 只有一个可变引用(&mut T) 我有一个可变变量和一个不可变链接。编译器为什么会给出错误?定义: 在任何给定的时间

我有以下代码:

struct Foo<'a> {
    link: &'a i32,
}

fn main() {
    let mut x = 33;
    println!("x:{}", x);
    let ff = Foo { link: &x };
    x = 22;
}
铁锈书只有两条规则:

  • 对资源的一个或多个引用(
    &T
  • 只有一个可变引用(
    &mut T
  • 我有一个可变变量和一个不可变链接。编译器为什么会给出错误?

    定义:

    • 在任何给定的时间,可以有一个可变引用,也可以有任意数量的不可变引用
    • 引用必须始终有效
    隐式重新分配变量需要可变引用:

    fn main() {
        let mut x = 33;
        let link = &x;
        x = 22;
        *(&mut x) = 22; // Basically the same thing
    }
    
    重要的是,重新分配变量会使变量发生变异,这将导致不可变的引用
    链接的值发生更改,这是不允许的

    请注意,变量的初始赋值不要求变量是可变的:

    fn main() {
        let x;
        // Some other code
        x = 42;
    }
    
    定义:

    • 在任何给定的时间,可以有一个可变引用,也可以有任意数量的不可变引用
    • 引用必须始终有效
    隐式重新分配变量需要可变引用:

    fn main() {
        let mut x = 33;
        let link = &x;
        x = 22;
        *(&mut x) = 22; // Basically the same thing
    }
    
    重要的是,重新分配变量会使变量发生变异,这将导致不可变的引用
    链接的值发生更改,这是不允许的

    请注意,变量的初始赋值不要求变量是可变的:

    fn main() {
        let x;
        // Some other code
        x = 42;
    }
    

    是否有任何官方文档或教程表明,隐式分配给变量需要可变引用?@Kun我已经澄清了一些措辞;这实际上是重新分配,希望更明显的是一个值的突变。否则,我不知道。总的来说,很多人觉得这是不言而喻的!我认为不允许对借用变量(可变或不变借用)的所有者进行变异/重新分配是有道理的,只是希望它能更好地记录在铁锈书中。是否有官方文档或教程说明,隐式分配变量需要可变引用?@Kun我已经澄清了一些措辞;这实际上是重新分配,希望更明显的是一个值的突变。否则,我不知道。总的来说,很多人觉得这是不言而喻的!我认为不允许对借用的变量(可变或不变借用)的所有者进行变异/重新分配是有道理的,只是希望它能更好地记录在rust book中。