rust是静态语言,在编译时需要知道所有变量的类型.
- 基于使用的值,编译器通常能推断出他的类型
- 如果可能的类型比较多,就必须添加类型的标注,否则编译会报错
rust中类型分为两种 标量类型
和复合类型
标量类型
整数型
8 16 32 64 128
有符号整数型
rust中有符号类型以
i
开头
- i8
有符号8位
- i16
有符号16位
- i32
有符号32位
- i64
有符号64位
- I128
有符号128位
let var8:i8 =10;
let var16:i16=128;
let var32:i32 = 1234;
let var64:i64 =11223344;
let var128:i128 = 112233445566;
无符号整数型
rust中无符号类型以
u
开头
- u8
无符号8位
- u16
无符号16位
- u32
无符号32位
- u64
无符号64位
- u128
无符号128位
isize和usize
rust整数类型中有两个特殊的类型,他们的值取决于当前计算机运行位数
- isize: 64位计算机 为 64位
有符号
- usize 32位计算机 为 32位
无符号
浮点型
单精度浮点型
rust中单精度浮点型用 f32表示
双精度浮点型
rust中双精度浮点型用 f64表示
布尔类型
占一个字节大小,非真既假,非假既真
- true
- false
字符类型
rust中char类型比较特殊,占用4个字节大小,可使用 unicode字符.
let guess:u32 = "42".parse().expect("Not a numer");
println!("{}",guess);
let var8:i8 =10;
let var16:i16=128;
let var32:i32 = 1234;
let var64:i64 =11223344;
let var128:i128 = 112233445566;
println!("{},{},{},{},{}",var8,var16,var32,var64,var128);
let default_int:isize =64;
let default_uint:usize = 64;
println!("{},{}",default_int,default_uint);
// 数值操作 + - * / %
let sum =5+10;
let sub = 10-5;
let mul = 3*2;
let div = 12/3;
let rem = 54%5;
println!("sum={},sub={},mul={},div={},rem={}",sum,sub,mul,div,rem);
let is_light:bool = true;
let is_shutdown = false;
println!("isLight:{},isShutdown:{}",is_light,is_shutdown);
// 字符
let x = 'A';
let y:char = 'の';
let z = '';
println!("x={},y={},z={}",x,y,z);
复合类型
rust中复合类型只有两种,元组,数组
元组
- 长度固定一旦创建长度无法修改
- 在小括号里,将值用逗号分开
- tuple 中每一个位置都对应一个类型,tuple中类型不必相同
- tuple 解构 let (x,y,z) =xx;
- 访问元素 xxx.0 xxx.1
语法
let varName:(type1,type2,type3)=(val1,val2,val3);
访问元组的方式:下表索引访问 varName.index
let tup:(i32,f64,u8)= (500,6.4,1);
println!("{},{},{}",tup.0,tup.1,tup.2);
可用通过元组解构来赋值给多个变量
let (x,y,z) = tup;
println!("{},{},{}",x,y,z);
// 元组
let tup:(i32,f64,u8)= (500,6.4,1);
println!("{},{},{}",tup.0,tup.1,tup.2);
// tuple 解构
let (x,y,z) = tup;
println!("{},{},{}",x,y,z);
数组
- 数组中类型必须一致
- 数组长度固定
- 中括号里,用逗号分开
- 分配在stack上
- 没有vector 好用
- 表示一个数组 let xxx[type,size]={1,2,3,4,5};
语法
let arr:[arrType,arrSize]=[1,2,3,4,5];
// 因为数组内元素类型一致,所以可以省略类型
let arr =[1,2,3];
创建一个数组
// 数组
let arr =[1,2,3,4,5,6];
for i in arr {
println!("{}",i);
}
let arr:[i32;3]=[1,23,4];
创建单一元素数组
创建9个元素都是1的数组
// 创建单一元素数组
let matrix =[1;9];
// let martix:[i32,9]=[1,1,1,1,1,1,1,1,];
println!("---------");
for ele in matrix {
println!("{}",ele);
}