rust中的原始数据类型

整数型

位长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

isize和usize是当前操作系统处理数据的位长度大小,取决于所运行的目标平台

浮点数型

  • rust中支持32位浮点数(f32),和64位浮点数(f64),现代计算机中对于两种浮点数的处理速度相近,但64位浮点数精度更高

  • rust中不支持++和--操作

布尔型

  • rust中布尔型用bool表示,值只能是true或false

字符(串)型

  • 字符型用char表示
  • 字符串用String表示,标识可变长度的文本数据
  • rust中char类型大小为4字节(32bit),支持中文、日韩文字符等非英文字符,支持表情符号和零宽度空格,这些在rust中都是合法的char值
  • 中文编码有GBK和UTF-8两种,编程时最好都是用UTF-8,避免编译报错

复合类型

元组

  • rust中元组是用一对“()”包裹的数据,其中的数据项可以是不同的数据类型
  • rust中元组数据支持解构
let tup: (i32, f64, char) = (500, 23.125, 'rust');
let (x, y, z) = tup;

数组

  • rust中数组是用一对“[]”包裹的数据,其中的数据项必须是同类型的
  • 对于数组中的元素,如果需要进行修改时,在声明数组时也需要将数组声明为一个可变变量
  • 定义数组时声明类型时使用[]进行声明,其中使用冒号(;)进行分割,第一项时数组中数据的类型,第二项时数组的长度
  • 如果需要在数组中存放不同类型的数据可以使用rust中的枚举类/元组/结构体等实现
let a = [1, 2, 3, 4, 5];
// a 是一个长度为 5 的整型数组

let b = ["January", "February", "March"];
// b 是一个长度为 3 的字符串数组

let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一个长度为 5 的 i32 数组

let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];

let first = a[0];
let second = a[1];
// 数组访问

a[0] = 123; // 错误:数组 a 不可变
let mut a = [1, 2, 3];
a[0] = 4; // 正确

// 枚举实现多类型数组
enum Data {  
    Int(i32),  
    Float(f64),  
    String(String),  
    // ... 其他类型  
}  
fn main() {  
    let data_array: [Data; 3] = [Data::Int(1), Data::Float(3.14), Data::String("Hello".to_string())];  
}

// 元组实现多类型数组
fn main() {  
    let data_array: [(i32, f64, String); 3] = [  
        (1, 3.14, "One".to_string()),  
        (2, 2.71, "Two".to_string()),  
        (3, 1.61, "Three".to_string()),  
    ];  
}

// 使用结构体实现多类型数组
enum Value {  
    Int(i32),  
    Float(f64),  
    String(String),  
    // ... 其他类型  
}
struct Data {  
    value: Value
}  
  
// 然后你可以像这样使用它:  
let data_array: [Data; 3] = [  
    Data { value: Value::Int(1) },  
    Data { value: Value::Float(3.14) },  
    Data { value: Value::String("Hello".to_string()) }, 
];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容