rust基本概念
程序入口函数,没有返回值
fn main(){
}
使用let
来声明变量,进行绑定
此处没有指定a
的类型,编译器会默认根据a
的值为a
推断类型:i32
,有符号32位整数
let a = 10;
主动指定b
的类型为i32
let b: i32 = 20;
mut
表示可变的,rust中默认不可变
let mut c = 30i32;
let d = 30_i32;
println!
是宏调用
{}
是占位符,在具体执行过程中,会把a
的值代入进来
println!("a= {}", a);
字符串使用双引号 “” 而不是单引号 ‘’,Rust 中单引号是单个字符类型char
变量
下面的代码会报错,因为x不可变
fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
将代码改成这样就不会报错了
fn main() {
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
当变量声明绑定后未使用会报错,变量前加个_
即可忽略。
fn main() {
let _x = 5; //不会报错
let y = 10; //会报错
}
变量解构
let (a, mut b): (bool,bool) = (true, false);
(a, b) = (1, 2);
// _ 代表匹配一个值,但是我们不关心具体的值是什么,因此没有使用一个变量名而是使用了 _
[c, .., d, _] = [1, 2, 3, 4, 5];
常量
- 常量使用
const
关键字来声明,并且值的类型必须标注。 - 常量自始至终不可变
变量遮蔽(shadowing)
允许声明相同的变量名,在后面声明的变量会遮蔽掉前面声明的
fn main() {
let x = 5;
// 在main函数的作用域内对之前的x进行遮蔽
let x = x + 1; //6
{
// 在当前的花括号作用域内,对之前的x进行遮蔽
let x = x * 2;
println!("The value of x in the inner scope is: {}", x); 、//结果为12
}
println!("The value of x is: {}", x); //结果为6
}
也可以遮蔽不同的类型
// 字符串类型
let spaces = " ";
// usize数值类型
let spaces = spaces.len();
}
**也可以遮蔽不同的类型**
```rust
// 字符串类型
let spaces = " ";
// usize数值类型
let spaces = spaces.len();