rust遮蔽(shadow)示例代码

rust 复制代码
fn main() {
    let x = 5;

    let x = x + 1;
    {
        let x = x * 2;
        println!("The value of x in the inner scope is: {}", x);
    }
	//x=10; //这样写会编译报错
    println!("The value of x is: {}", x);
}

这个程序首先将数值 5 绑定到 x。然后通过重复使用 let x = 来遮蔽之前的 x,并取原来的值加上 1,所以 x 的值变成了 6。在内部作用域内,第三个 let 语句同样遮蔽前面的 x,取之前的值并乘上 2,得到的 x 值为 12。当该作用域结束时,内部遮蔽结束并且 x 恢复成 6。当运行此程序,将输出以下内容:

bash 复制代码
$ cargo run
   Compiling variables v0.1.0 (file:///projects/variables)
    Finished dev [unoptimized + debuginfo] target(s) in 0.31s
     Running `target/debug/variables`
The value of x in the inner scope is: 12
The value of x is: 6

遮蔽和将变量标记为 mut 的方式不同,因为除非我们再次使用 let 关键字,否则若是我们不小心尝试重新赋值给这个变量,我们将得到一个编译错误。通过使用 let,我们可以对一个值进行一些转换,但在这些转换完成后,变量将是不可变的。

相关推荐
2601_954526752 小时前
【硬核架构】打破 IT 与 OT 的数据孤岛!基于 Rust 异步协程的工业 IoT 网关重构,兼谈顶级自动化智能仪表厂家选型指南
物联网·架构·rust
white_ant3 小时前
17- 文本统计/处理工具使用指南
rust·个人开发·tauri
独孤留白3 小时前
Rust 类型转换全景指南 —— 从引用转换到序列化
rust
独孤留白3 小时前
从C到Rust:Trait TryFrom TryInto 可能失败的类型转换
rust
雨师@4 小时前
python通过rust编写组件扩展自己的能力
python·rust
程序员爱钓鱼6 小时前
Rust 切片 Slice 详解:安全访问连续数据
前端·后端·rust
花褪残红青杏小13 小时前
Rust图像处理第20节-PCA 主成分分析:把图片压缩到 3 个数字
rust·webassembly·图形学
脱胎换骨-军哥20 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust
songroom21 小时前
Kimi K3:Rust封装XTP接口详细教程实践
开发语言·后端·rust
独孤留白1 天前
从C到Rust:Trait From Into 类型转换
rust