首页 > 解决方案 > 没有“让”的影子

问题描述

据我了解,Rust 中的阴影允许您通过使用let和重新声明变量来使用相同的变量,例如

let x = 5;

let x = x + 1;

let x = x * 2;

println!("The value of x is: {}", x);

但是,如果你使变量可变,那不是模仿阴影,例如:

let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
 x = 7;
println!("The value of x is: {}", x);

在示例 1 和 2 中,变量存储在堆栈或堆中的什么位置?

标签: rustshadowing

解决方案


您示例中的所有值都存储在堆栈中。let在示例 1 中,为每个语句将一个新值压入堆栈。

看起来您从The Rust Programming Language中获得了示例。也许再次阅读本段以强调:

和遮蔽之间的另一个区别mut是,因为我们在let再次使用关键字时有效地创建了一个新变量,所以我们可以更改值的类型但重用相同的名称。


推荐阅读