学习资料:rust圣经
基本类型
在rust中每个值都有确切类型
-
数值类型:有符号整数(
i8
,i16
,i32
,i64
,isize
)、无符号整数(u8
,u16
,u32
,u64
,usize
)、浮点数(f32
,f64
)、以及有理数、复数 -
字符串:字符串字面量和字符串切片
&str
-
布尔类型:
true
和flase
-
字符类型:表示单个 Unicode 字符,存储为4个字节
-
单元类型:即
()
,其唯一的值也是()
类型推导与标注
它与python等动态语言不同,rust是静态语言,意思就是编译器必须要在编译期就要知道所有变量的类型。虽然它可以根据上下文自己推导出这个变量的类型,但在某些情况下还需要你自己去给它标注类型。
举个例子:
let guess = “42”;
对于这个值,rust是很难分辨它的类型的。所以我们需要给编译器信息,用以下写法来标注其类型。
let guess: i32 = ...
"42".parse::<i32>()
1.数值类型
rust用的是传统语法创建整数(1,2,..)和浮点数(1.1, 1.2, ...)
2. 字符、布尔、单元类型
字符类型(char)
在rust中字母,汉字,表情符号都可作为字符
ps:rust中单个字符只能用 ' '表示,字符串用 " " 表示
布尔(bool)
就只有两个值true和false
单元类型
单元类型就只有 ()这一个值。
它在一些函数返回值时会用上,仅作为一个占位值
3.语句和表达式
在rust语句和表达式的区分很重要,他俩重要特征在于:表达式总要返回值
fn add_with_extra(x: i32, y: i32) -> i32 {
let x = x + 1; // 语句
let y = y + 5; // 语句
x + y //表达式
}
而对这个函数整体来说就是一个表达式
fn main(){
let y = {
let x = 3; //语句
x + 1 //表达式
};
println!("The value of y is: {}", y);
}
语句和表达式虽有区分,但它们并不是一直分开的,就比如上面这段代码,大括号里的整体作为表达式,返回值绑定给y变量,但整体看y的绑定语句,它又是一条语句。
4.函数
函数方面和其他语言差不多,不过有一个注意点,因为rust是强类型语言,所以函数参数需要标注其类型:
fn another_function(x: i32, y: f32) {
println!("The value of x is: {}", x);
println!("The value of y is: {}", y);
}
如果没有给x或y标注类型,编译器就会报错
函数返回
在上面的例子就能看到,rust中函数返回值得时候,不需要用到return,只需要把;删了就行
fn plus_five(x: i32) -> i32 {
x + 5
}
就像这样,它的意思就是返回x+5的值
永不返回得发散函数
rust可以设定函数的返回类型,但如果用 ! 作为返回类型,就会表示该函数永不返回。经常会用做导致程序崩溃的函数
fn dead_end() -> ! {
panic!("no");
}