
Rust中最简单的数据类型称为原始数据类型一、标量类型Scalar Types1. 整数类型Integer长度有符号无符号8-biti8u816-biti16u1632-biti32u3264-biti64u64128-biti128u128平台相关isizeusizeisize和usize是什么呀这两个类型的位数取决于你的计算机类型32位计算机isize和usize和i32u64一样。64位计算机isize和usize和i64u64一样。整个两种类型有啥实际用途具体请看这篇文章大白话rust系列03 isize和usize2. 浮点类型Floating-Point类型精度f32单精度32 位f64双精度64 位默认浮点类型是f64遵循 IEEE-754 标准let x: f32 3.14; let y: f64 2.71828;3. 布尔类型Booleanbool只有两个值true和false占1 个字节let t: bool true; let f: bool false;4. 字符类型Characterrust的char作为字符用单引号 表示如‘6’‘A’ ,大 等。每个char在内存中都是数字如A是65。而汉字“友”是数字21451。char占32位也就是4个字节。将字符变为数字的编码方式是UnicodeASCII 共有128 个字符编码范围 0–127。如果算上扩展 ASCIIExtended ASCII则通常有256 个字符0–255但扩展部分并没有统一标准。扩展 ASCII 具体是哪些字符取决于你用的是哪个代码页在此不做深究这里提到ASCII是因为它的字符数刚好满足u8的大小范围。所以rust是可以安全地将u8转换为char的如下面的代码所示fn main() { let numberToChar 100; println!(numberToChar {} as char {}, numberToChar, numberToChar as u8 as char); }运行结果rust中char为了能覆盖所有的字符一个char用了四个字节存储但是char在字符串中并不会每个字符都采用四字节它会尽可能地使用小位数来节省内存fn main() { println!(Size of char : {},std::mem::size_of::char()); let c 我; println!(我 占 {} 个字节, c.len_utf8()); }运行结果那么rust还有哪些原始数据类型呢复合类型Compound TypesRust 有 2 种原始复合类型1. 元组Tuple2. 数组Array关于这两种类型后面再单独介绍再次不多做阐述总结表类别类型标量 - 整数i8i16i32i64i128isize/u8u16u32u64u128usize标量 - 浮点f32f64标量 - 布尔bool标量 - 字符char复合 - 元组(T1, T2, ...)复合 - 数组[T; N]以上共4 种标量类型2 种复合类型就是 Rust 的全部原始数据类型。此外还有单元类型()零元组和永不返回类型!never type它们也属于原始类型范畴。