美文网首页
Rust 数据类型

Rust 数据类型

作者: 村南一枝花 | 来源:发表于2019-04-01 11:08 被阅读0次

在 Rust 中,每一个值都属于某一个 数据类型(data type),这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound)。

Rust 是 静态类型(statically typed)语言,也就是说在编译时就必须知道所有变量的类型。根据值及其使用方式,编译器通常可以推断出我们想要用的类型。但是很多时候存在多种类型都有可能的情况。

// fail 会发生编译错误
let guess = "42".parse().expect("Not a number!")
// success
let guess: u32 = "42".parse().expect("Not a number!")

标量类型

标量(scalar)类型代表一个单独的值。Rust 有四种基本的标量类型。

类型名称
整型
浮点型
布尔型
字符类型

整型

整型 是一个没有小数部分的数字,并且通过u来决定整型是否是带符号。
有符号无符号 代表数字能否为负值

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
arch size usize
整型溢出

一个u8类型的整型最多放255,如果放入256,就会导致“整型溢出”(“integer overflow” )

浮点型

Rust 也有两个原生的 浮点数(floating-point numbers)类型,它们是带小数点的数字。Rust 的浮点数类型是 f32 和 f64,分别占 32 位和 64 位。默认类型是 f64,因为在现代 CPU 中,它与 f32 速度几乎一样,不过精度更高。

数值运算

+ | -  | * | %

布尔型

true / false

字符类型

Rust 的 char 类型是语言中最原生的字母类型,
char 由单引号指定,不同于字符串使用双引号

fn main() {
    let c = 'z';
    let z = 'ℤ';
    let heart_eyed_cat = '😻';
}

复合类型

复合类型Compound types)可以将多个值组合成一个类型。Rust 有两个原生的复合类型:元组(tuple)和数组(array)。

元组

元组是一个将多个其他类型的值组合进一个复合类型的主要方式。
我们使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型,而且这些不同值的类型也不必是相同的。

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);
}

tup 变量绑定到整个元组上,因为元组是一个单独的复合元素。为了从元组中获取单个值,可以使用模式匹配(pattern matching)来解构(destructure)元组值

fn main() {
    let tup = (500, 6.4, 1);
    let (x, y, z) = tup;
    println!("The value of y is: {}", y);
}

数组

另一个包含多个值的方式是 数组(array)。与元组不同,数组中的每个元素的类型必须相同。Rust 中的数组与一些其他语言中的数组不同,因为 Rust 中的数组是固定长度的:一旦声明,它们的长度不能增长或缩小。

let a: [i32; 5] = [1, 2, 3, 4, 5];

当你想要在栈(stack)而不是在堆(heap)上为数据分配空间,或者是想要确保总是有固定数量的元素时,数组非常有用。但是数组并不如 vector 类型灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型。当不确定是应该使用数组还是 vector 的时候,你可能应该使用 vector。

相关文章

  • 读Rust程序设计语言 - 04

    语言/Rust 数据类型 - Rust 程序设计语言 简体中文版 数据类型 rust 声明的变量一定属于某一数据类...

  • rust数据类型

    rust数据类型支持primitive和compound类型,见下图 primitive类型 compound数据...

  • Rust 数据类型

    在 Rust 中,每一个值都属于某一个 数据类型(data type),这告诉 Rust 它被指定为何种数据,以便...

  • RUST 学习日记 第11课 ——向量

    RUST 学习日记 第11课 ——向量(动态数组) 0x00 回顾与开篇 上一节主要讲解了Rust的复合数据类型...

  • Rust—数据类型

    Rust是静态类型语言,在编译时必须知道所有变量的类型,根据值及其使用方式,编译器通常可以推断出我们想要的类型。当...

  • Rust - 数据类型

    基础类型有integerfloatbooleanchar 0x01 integer 类型定义 值定义 包含了八进制...

  • Rust 数据类型

    数据类型 rust 是静态类型语言,所有变量在编译时都需要明确类型。 整型 长度无符号有符号8-bitu8i816...

  • RUST 学习日记 第17课 ——流程控制

    RUST 学习日记 第17课 ——流程控制 0x00 回顾与开篇 有关Rust数据类型的知识暂时告一段落了,从这...

  • Rust基础学习-03-变量常量和基本数据类型

    这里来聊一下Rust的变量声明,以及基本的数据类型。 可变性 与其他编程语言很不同的一点是,Rust 的变量默认是...

  • 【Rust】Rust和Java的对比--数据类型

    Rust和Java都是一种静态类型的语言。这意味着它必须在编译期知道所有变量的类型。 整形 Rust 长度有符号类...

网友评论

      本文标题:Rust 数据类型

      本文链接:https://www.haomeiwen.com/subject/ptumbqtx.html