title: 数据类型
updated: 2023-11-01T18:30:38.0000000+08:00
created: 2023-10-02T18:08:53.0000000+08:00


字符串类型:

&str
需要使用双引号括起来

整数类型:

u32:无符号的整数类型,占32位空间,范围 0-2的32次方-1,包括0和2的32次方-1
i32:有符号的整数类型,也是32位字节,范围从-2的32次方-1,到2的31次方-1
以此类推,在rust中,8字节到128字节的整数类型都是如此表示
独特的整数类型:arch,表示系统架构,如果计算机是64位的,那么isize/usize就是i32/u32

书写格式:都可以用下划线方便阅读,除了字节以外,都可以使用类型来作为后缀,例如47u8
十进制:10_000
十六进制:0×ff 0x开头
八进制:0o77 0o开头
二进制:0b1111_0000 0b开头
字节:b'AAS' b''把字节放进引号

整数溢出:当你把设置的值超出了它的类型的值,调试模式下会检查这个bug,发布模式-release下不会检查这个bug,如果发生了这个情况,那么rust会执行环绕操作,例如u8类型,最大值为255,如果指定值为258,则会环绕 258=2,

浮点类型:

f32:32位单精度
f64:64位双精度
在现在的cpu上这两种浮点类型的运算速度差不多,但f64精度更高,所以rust使用f64作为默认类型

字符类型:

char:
字符类型的值使用''单引号扩起来,一个字符占用4字节大小,rust的字符值使用Unicode,可以表示拼音,中日韩文,零长度空白字符,emoji表情等等

Tuple:

可以放多个类型的多个值,长度固定,一旦声明就无法改变

let tu:(u32,i32,u32) = (1,-2,33);
println!("x value is {}",tu.0);

可以通过函数名.0这样的格式提取其中的数据,也可以通过元素匹配来解构,例如 let (x,y,z)=tu

数组:

数组里面的元素类型必须相同,和tuple一样声明后无法改变长度

  let shuzu: \[i32; 5\]=\[1,7,3,4,5\];
  println!("{}",shuzu\[2\]);

如果数组内的元素值也是相同的,可以使用let shuzu = [3; 5]; 效果和[3,3,3,3,3];一样
如果提取索引超出索引范围,编译会报错

数据类型的转换

使用as:需要注意谨慎转换,不然很容易造成内存溢出
image1

最后修改:2024 年 05 月 05 日
如果觉得我的文章对你有用,请随意赞赏