Rust&Arch Linux之旅
Rust是一门编译语言,效率媲美C或C++
但是,Rust没有GC,所以安全度极高
Rust可以做哪些事情?
- 使用rust编写操作系统,游戏引擎
- 构建高性能的Web应用程序,网络服务
- 嵌入式领域
Rust环境搭建
1.安装rustup-init
2.运行rustup-init
第一个Rust应用程序
1 | fn main() { |
编译运行即可。
fn
关键字定义函数,main
是入口点/主函数。println
是一个宏,Rust中的宏以!
结尾。宏类似与函数(函数的plus版,十分滴强大)
有4个注意点,是必须要关注的
- rust的缩进是4个空格,而不是tab;
println!
后面那个!表示,这是一个rust宏。如果它已经被一个函数替代了,那么就不应该加那个感叹号。你应该知道这么一件事,如果后面有个!
,那么这个玩意就是一个rust宏。在rust19里面会有更多的关于宏的细节;- 你看到的这个
"helloworld"
字符串,字符串必须用""
而不是''
; - 结束必须写
;
,不然就给你报错(╬▔皿▔)╯
cargo
cargo是Rust的一个高级的包管理器和构建器,可用来创建一个项目之类的。
创建的Cargpo.toml文件,是你选择的一些东西,比如依赖之类的。
1 | cargo build |
从一个简单的猜数游戏开始这场Journey
1.用cargo新建一个项目
1 | cargo new guessing_game |
可以注意到,rust项目的文件名是由小写字母和下划线组成的
2.来看看自动生成的Cargo.toml文件
1 | [package] |
除此之外,还有一个main.rs文件,写东西的时候可以写这里面,可以编译运行试试看。
3.正式开始这个游戏
1 | use std::io; |
这一段代码包含了非常多的信息,因此作为一名新手菜鸡,得来一行一行的看这玩意。
为了可以获取到用户上输入以及打印这个猜数的结果(也就是程序与用户进行交互),我们需要使用这个
io
输入/输出库。这个
io
库来自于标准库,被称为std
:
1 use std::io;默认滴,Rust有一整套的标准的库,这套库被叫做prelude,你可以看看这个文档,里面有关于它的详细的介绍。https://doc.rust-lang.org/std/prelude/index.html
第二行代码,
main
方法是每一个项目中的入口点。
1 fn main(){这个
fn
语法声明一个新的函数,这个小括号是空的,表示里面没参数,并且这个一对大括号是这个函数的主体。
这个
println!
前面已经说了,是一个宏,用来打印字符串在屏幕上面滴。
1
2
3 println!("let's guess a number!");
println!("Please input your gusee.");而且,这个
println!
宏会自动滴换行。print!
不会换行
接下来,创建一个变量来接受一下来自用户的输入。由于rust的所有的变量都是不可变的,也就是,你一旦创建,默认就不可变,你不能再改变它的值了。但是,用户的输入肯定是可变的,那么,就需要使用
mut
关键字来使得这个变量可变。就像这样:
1 let mut guess = String::new();我们使用let来声明创造一个变量。rust可以自动的识别你的变量的类型,但是不是那么的智能。
String::new()
函数会返回一个新的实例,绑定到guess
而
::
语法这这里表明这个new
是这个String
类的相关函数,就是这个实例的方法。这个new
方法会创建一个新的、空的字符串。
这个
stdin
的函数来自与这个io
模块,它允许我们处理用户的输入
Rust中的数据类型
Rust并不强制要求指定数据类型,编译器会自动帮你
声明一个变量:
1 | fn main() { |
rust有四种基本数据类型。
- 整形
- 浮点型
- 布尔类型
- 字符类型
猜数游戏升级
接下来写这样一个游戏,用户随机猜一个数
1 | use rand::Rng; // 引入随机数生成库 |