在 Rust 中,变量用关键字 let 声明。 每个变量都有一个唯一的名称。 声明变量后,可将其绑定到某个值,也可稍后在程序中绑定该值。
在 Rust 中,变量绑定默认不可变。 如果变量不可变,在将值绑定到名称后,将无法更改此值。
fn main() {
let x = 5; // 不可变变量
println!("{}", x);
let mut y:i32 = 6; // 可变变量
y = y + 1;
println!("{}", y);
}
在Rust中可以使用相同的名字声明新的变量( 类型也可以是新的 ),新的变量就会shadow(隐藏)之前声明的同名变量。
fn main() {
let x = 5;
println!("x is {}", x);
let mut x: f32 = 8.88;
x += 2.2;
println!("x is {}", x);
}
常量(constant),常量在绑定值以后也是不可变的,与变量的区别 :
不可以使用mut,常量永远都是不可变的;
声明常量使用const关键字,它的类型必须被标注;
常量可以在任何作用域内进行声明,包括全局作用域;
常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值;
在程序运行期间,常量在其声明的作用域内一直有效;
命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开;
fn main() {
const PI:f64 = 3.14159265358979323846;
println!("PI is {}",PI);
}
如果你创建了一个变量却不在任何地方使用它,Rust 通常会给你一个警告,因为这可能会是个 BUG。但是有时创建一个不会被使用的变量是有用的,比如你正在设计原型或刚刚开始一个项目。这时你希望告诉 Rust 不要警告未使用的变量,为此可以用下划线作为变量名的开头:
fn main() {
let _x = 5;
let y = 10;
}
运行 :
warning: unused variable: `y`
--> src/main.rs:3:9
|
3 | let y = 10;
| ^ help: if this is intentional, prefix it with an underscore: `_y`
|
= note: `#[warn(unused_variables)]` on by default
warning: `hai-test` (bin "hai-test") generated 1 warning
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.21s
Running `target\debug\hai-test.exe`
两个变量都是只有声明,没有使用,但是编译器却只给出了 y 未被使用的警告。
值得注意的是,这里编译器还很善意的给出了提示(Rust 的编译器非常强大,这里的提示只是小意思):将 y 修改 _y 即可。