前言
因为某些需要,要研究大段的Rust代码,又对Rust的流行早有耳闻,今天开始学习学习,但愿能坚持下来,发这里就当笔记的备份了。
教程
Rust圣经,感觉是中文最全的rust教程了,可惜没有视频教程,只能这样看了。
安装
官网下载,win命令行:
cargo new hello_world
新建完成后,
cd hello_world
code .
打开vscode,记得在vscode里下载rust的包,直接搜索安装即可
(你肯定不想用记事本写代码吧~🥺)
开始学习吧
变量命名与绑定
fn main(){
let mut a=10;
let b=5;
}
mut:可变。
没有mut:不可变。
防止编译器warning:
#[allow(unused_variables)]
fn main(){
let mut _a=10;
}
加下划线或者#[allow(unused_variables)],用不到的变量rust编译器就会报错,这里足以体现rust编译器的强大了。
变量遮蔽,作用域
fn main里面是一个作用域,也可以自己加{ }生成一个作用域,当然定义的函数也是一个作用域。
变量遮蔽仅在作用域里生效。
什么是变量遮蔽呢?😏
首先要是不可变的变量,示例如下:
fn main() {
let x=10;
{
let x=5;
println!("{}",x);
}
println!("{}",x);
}
中间的{}里重新绑定了变量x,这里相当于是又开辟了个“5”的内存空间,然后把x绑定上去(原来x是绑定在10上面的),当然这个重定向只在{}中有效。
所以会输出
5
10
但如果是mut就不存在这种情况。
fn main() {
let mut x=10;
{
x=5;
println!("{}",x);
}
println!("{}",x);
}
输出
5
5
这里是直接把原来存10的空间存5了,所以不存在“重定向”。会一直输出5
变量解构
一些高级用法。。
fn main() {
let (mut x, y) = (1, 2);
x += 2;
assert_eq!(x, 3);
assert_eq!(y, 2);
}
struct Struct {
e: i32
}
fn main() {
let (a, b, c, d, e);
(a, b) = (1, 2);
// _ 代表匹配一个值,但是我们不关心具体的值是什么,因此没有使用一个变量名而是使用了 _
[c, .., d, _] = [1, 2, 3, 4, 5];
Struct { e, .. } = Struct { e: 5 };
assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
}
Follow Me
觉得写的还行的话可以点点关注,最近会频繁更新😉