首页 技术杂谈 正文
  • 本文约1266字,阅读需6分钟
  • 163
  • 0

Rust - 数据类型

摘要

Rust的数据类型,构建安全和高效代码的基石。从基本的整数和浮点数到复杂的枚举和结构体,Rust提供了丰富的类型系统,支持模式匹配和泛型编程,确保类型安全和内存安全。

1、数据类型

  • 数据类型分为:标量和复合类型
  • rust是一门静态语言,在编译时必须都表明变量的类型,否则编译不通过

1.1、标量类型

  • 一个标量类型代表一个单个的值
  • Rust有四个主要的标量类型
    • 整数类型
    • 浮点类型
    • 布尔类型
    • 字符类型

1.1.1、整数类型

  • 整数类型没有小数部分,有符号类型的数值是有正有负,无符号类型的数值都是正的
  • 例如u32就是一个无符号的整数类型,占据32位的空间
  • 无符号整数类型以u开头
  • 有符号整数类型以i开头
Length Signed Unsigned
8bit i8 u8
16bit i16 u16
32bit i32 u32
64bit i64 u64
128bit i128 i128
arch isize usize
  • isize和usize类型的位数由程序运行的计算机的架构所决定
    • 如果是64位计算机,那就是64位(i64和u64)
    • 如果是32位计算机,那就是64位(i32和u32)

1.1.2、浮点类型

  • Rust有两种基础的浮点类型,也就是含有小数部分的类型
    • f32,32位,单精度
    • f64,64位,双精度

1.1.3、数值操作

  • 加减乘除余
fn main() {
    let sum = 5 + 10 ;

    let difference = 95.5 - 4.3;

    let product = 4 * 30;

    let quotient = 57.6 / 32.2;

    let reminder = 54 % 5;
}

1.1.4、布尔类型

  • Rust的布尔类型也有两个值:true和false
  • 一个字节大小
  • 符号是bool
fn main() {
    let t = true;
    let f:bool = false;
}

1.1.5、字符类型

  • Rust语言中char类型被用来描述语言中最基础的单个字符
  • 字符类型的字面值使用单引号
  • 占用4个字节大小
  • 是Unicode标量值,可以表示比ASCII多得多的字符内容:拼音、中日韩文、零长度空白字符、表情
fn main() {
    let x = 'z';
    let y:char = 'y';
    let z = '😀';
}

1.2、复合类型

  • 复合类型可以将多个值放在一个类型里
  • Rust提供了两种基础的复合类型:元组(Tuple)、数组

1.2.1、元组

  • 元组可以将多个类型的多个值放在一个类型里
  • 元组的长度是固定的:一旦声明就无法改变
fn main() {
    // 创建元组  
    // 在小括号里,将值用逗号分开
    // 每个位置对应一个类型,元素类型不必相同
    let t:(i32,f64,char) = (55,14.1,'s');

    // 获取元组里的值
    // 1、模式匹配
    let (x,y,z) = t;
    println!("{}, {}, {}, ",x,y,z);

    // 2、访问元组的元素,从0开始
    println!("{}, {}, {}, ", t.0, t.1, t.2);
}

1.2.2、数组

  • 数组也可以将多个值放在一个类型里
  • 数组中每个元素的类型必须相同
  • 数组的长度也是固定的
fn main() {
    // 声明数组
    let a = [1,2,3,4,5,6,7,8,9];
    // 另一种声明数组的方法,如果元素值都相同
    // 这样相当于 let b = [3,3,3,3,3]
    let b = [3;5];
    // 访问数组元素
    let one = a[0];
    println!("{}, {} ",one,a[2]);
}
评论