一、Rust环境搭建#
这里介绍简单的Linux下Rust环境搭建,可以使用Windows或者Linux。
Rust有一个官方的工具来管理Rust的安装和更新,可以直接下载使用脚本一键安装。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh在安装过程中直接按y同意继续安装即可。
在安装的最后会要求更新环境变量,按照命令行给出的提示操作即可。
二、Cargo教程#
Cargo是Rust官方的项目管理器,也是一个包管理器,可以通过Cargo操作Rust项目也可以用来管理社区的Rust包。
安装Rust会自动安装Cargo。
- 使用Cargo新建一个项目工程
Cargo new my_project - 使用Cargo编译工程
Cargo build - 使用Cargo运行可执行文件(编译并运行)
Cargo run - 使用Cargo进行编译检查(比直接进行编译要快,适合快速检查错误)
Cargo check
cargo build默认构建的是debug版本的,要使用cargo build --release来构建Release版本的软件,这时候会进行大量的优化,增加编译时间但是提高运行效率。可以直接运行编译后的可执行文件,也可以使用cargo run -- release来运行
Cargo进行项目管理,主要是利用Cargo.lock和Cargo.toml两个文件。
- Cargo.toml是cargo特有的项目数据描述文件,存储了项目所有的元配置信息。
三、数据类型#
Rust是强类型语言,也就是说具有自动判断变量类型的能力。 Rust定义的变量默认是不可变的,如果要可变的话需要在变量前面加上mut来修饰。
整数类型(Integer)#
整数型分为有符号和无符号两种,根据位长度又分为不同的类型。

arch的位长度代表着目前平台的位长度。

可以用不同的进制表示整型,在一个比较长的数字中加入下划线可以增加可读性。
浮点型(FloatintPoint)#
Rust支持64位浮点和32位浮点。默认是64位浮点。
Rust不支持**++或者—这样的变量自增自减语法**。
布尔型#
布尔型用bool表示,只有true和false。
字符型#
字符型用char表示,Rust中的char长度为4个字节。
元组#
元组是用()括起来的一堆数据,可以是不同的数据类型。
可以使用.来对一个元组其中的数据进行读取。
元组的数据类型和个数一旦定义就不能被改变,长度固定无法动态增加或减少元素。
let a:(i64, f64, i16) = (1, 2.0, 3); //声明println!("{}",a.1); //使用数组#
数组和c语言很像。
let mut a = [1,2,3]; //声明println!("{}",a[0]); //使用let mut b: [i32: 5] = [1, 2, 3, 4, 5]; //声明定义一个元素为i32,长度为5的数组四、Rust注释#
Rust使用 // 单行注释,使用 /// 进行多行注释。
在一个函数之前进行多行注释,可以作为文档说明注释,将来使用这个函数时就可以看到对应的说明。
/// 将一个数字加到另一个数字上//////#example/// let x = add(1, 2);///fn add(a: i32, b: i32) -> i32{ return a + b /*这也是一个注释*/}/*多行注释 *多行注释 */五、Rust函数#
Rust函数的基本格式如下。
fn function_name(a: i32, b: i64) -> i64( //函数体)所有函数开头都是 fn ,后面是函数名,再往后是入参,然后箭头指向返回值的类型。
函数可以在任何被访问到的地方进行定义,不是必须在其被调用之前进行定义
Rust函数体和表达式#
可以用 **{}**包括一个复杂的表达式。
let a = { let b = 1; b + 1};//最后a的值就是b+1同样的函数体也可以以一个数值表达式结尾。
除了以表达式结尾,还可以是return返回值。
六、条件语句#
let mut a = 1;let mut b = 2;if a < 1 { b += 1;}else if a >= 1 && a < 2 { b += 2;}else { b += 3;}条件判断语句中的条件,必须是bool类型,并且不允许使用**小括号()**包括起来。
即使是单条语句也必须使用**大括号{}**包括起来。
并且if else可以作为函数体表达式,也就是说可以将条件判断的执行语句直接作为返回值。
let a:i32 = if b > 1 {1} else {0};七、循环#
1. while循环#
let mut a = 0;let mut i = 0;while i < 10 { a += i; i += 1;}while循环和if类似,其条件判断语句不用加括号。C语言中的for循环一般使用while结构来实现。
2. for循环#
let a: [i32: 3] = [1, 2, 3];for i in 0..2 { println!("{}", a[i]);}//使用0..2作为一个range迭代器for i in a.iter() { println!("{}", a[i]);}//直接使用数组的迭代器在for循环中的i,是一个每次循环被定义的不可变变量,本质上其值等于迭代器,换句话说for循环和迭代器是绑定的。
3. loop循环#
loop 循环是一个无限循环,在循环内部判断循环条件然后跳出循环。
let mut a = 1;loop { a += 2; println!("{}", a); if a > 10{ println!("{}", a); break; }}