gpt4 book ai didi

rust - 为什么这个 Rust 程序忽略不变性

转载 作者:行者123 更新时间:2023-11-29 07:46:03 24 4
gpt4 key购买 nike

我有以下 Rust 程序,我预计它会导致编译错误,因为 x 稍后被重新分配。但它符合并提供输出。为什么?

fn main() {
let (x, y) = (1, 3);
println!("X is {} and Y is {}", x, y);

let x: i32 = 565;
println!("Now X is {}", x);
}

最佳答案

Rust 实际上允许您隐藏 block 中的其他变量,因此 let x: i32 = 565; 定义了一个变量 x隐藏之前用 let (x,y) = (1,3); 定义的 x。请注意,您甚至可以重新定义 x 以具有不同的类型,因为第二个 x 是一个全新的变量!

fn main(){
let x = 1;
println!("Now X is {}",x);

let x = "hi";
println!("Now X is {}",x);
}

reddit thread详细介绍了为什么这很有用。提到的两件事似乎很有趣:

  • 对于获取变量所有权但返回相同类型的另一个变量的操作,有时将返回的变量重新定义为具有相同名称“看起来不错”。来自 here :

    let iter = vec.into_iter();
    let iter = modify(iter);
    let iter = double(iter);
  • 或者使变量不可变:

    let mut x;
    // Code where `x` is mutable
    let x = x;
    // Code where `x` is immutable

关于rust - 为什么这个 Rust 程序忽略不变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42991325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com