欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Rust-02-变量与可变性

Rust-02-变量与可变性

2026/3/5 19:01:23 来源:https://blog.csdn.net/weixin_43714208/article/details/139472988  浏览:    关键词:Rust-02-变量与可变性

在Rust中,变量和可变性是两个重要的概念。

  • 变量:变量是用于存储数据的标识符。在Rust中,变量需要声明其类型,例如:
let x: i32 = 5; // 声明一个名为x的变量,类型为i32(整数),值为5
  • 可变性:Rust中的变量有两种可变性:可变(mutable)和不可变(immutable)。默认情况下,变量是不可变的,这意味着一旦赋值,其值就不能更改。要使变量可变,需要在声明时使用mut关键字,例如:
let mut x: i32 = 5; // 声明一个名为x的可变变量,类型为i32(整数),值为5
x = 6; // 修改x的值为6

需要注意的是,在同一作用域内,一个可变变量不能同时被多次声明为不可变。例如,以下代码会导致编译错误:
在这里插入图片描述

常量

类似于不可变变量,常量 (constants) 是绑定到一个名称的不允许改变的值,不过常量与变量还是有一些区别。首先,不允许对常量使用 mut 。常量不光默认不可变,它总是不可变。声明常量使用 const关键字而不是 let ,并且 必须 注明值的类型。常量可以在任何作用域中声明,包括全局作用域,这在一个值需要被很多部分的代码用到时很有用。最后一个区别是,常量只能被设置为常量表达式,而不可以是其他任何只能在运行时计算出的值。

    const FMT_DATE_TIME_YMDHMS: &str = "yyyy-MM-dd hh:mm:ss"; // 常量

在声明它的作用域之中,常量在整个程序生命周期中都有效,此属性使得常量可以作为多处代码使用的全局范围的值,例如一个游戏中所有玩家可以获取的最高分或者光速。将遍布于应用程序中的硬编码值声明为常量,能帮助后来的代码维护人员了解值的意图。如果将来需要修改硬编码值,也只需修改汇聚于一处的硬编码值。

作用域

使用let对变量重新计算和使用mut是有区别的,当不小心尝试对变量重新赋值时,如果没有使用 let关键字,就会导致编译时错误。通过使用 let ,我们可以用这个值进行一些计算,不过计算完之后变量仍然是不可变的。

fn main() {let x = 5;let x = 1 + x;{let x = x + 5;println!("{}",x); // 6+5=11}println!("{}",x); // 6
}

结果

C:/Users/tom.qu/.cargo/bin/cargo.exe run --color=always --package rust --bin rustFinished dev [unoptimized + debuginfo] target(s) in 0.00sRunning `target\debug\rust.exe`
11
6

mut 与覆盖的另一个区别是,当再次使用 let 时,实际上创建了一个新变量,我们可以改变值的类型,并且复用这个名字。
在这里插入图片描述

总结

    let mut x = 5; // 可变变量let y = 5; // 不可变变量const FMT_DATE_TIME_YMDHMS: &str = "yyyy-MM-dd hh:mm:ss"; // 常量// 使用let可以复用变量名// 变量作用域问题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词