3.Rust数据类型

Rust数据类型

Rust 每个值都有其确切的数据类型,总的来说可以分为两类:基本类型和复合类型。

基本数据类型

Rust是一个强类型语言与js不同,我们在声明变量时就要指定该变量的类型,编译器必须在编译期知道我们所有变量的类型。当然大多时聪明的编译器可以自动推导类型,但为了保证代码质量和可读性建议还是定义好类型。

基本类型意味着它们往往是一个最小化原子类型,无法解构为其它类型(一般意义上来说),基本数据类型由以下组成:

  • 数值类型: 有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 、浮点数 (f32, f64)、以及有理数、复数
  • 字符串:字符串字面量和字符串切片 &str
  • 布尔类型: true和false
  • 字符类型: 表示单个 Unicode 字符,存储为 4 个字节
  • 单元类型: 即 () ,其唯一的值也是 ()

整数类型

整数是没有小数部分的数字。之前使用过的 i32 类型,表示有符号的 32 位整数( i 是英文单词 integer 的首字母,与之相反的是 u,代表无符号 unsigned 类型)。下表显示了 Rust 中的内置的整数类型:

长度 有符号类型 无符号类型
8位 i18 u8
16位 i16 u16
32位 i32 u32
64位 i64 u64
128位 i128 u128
视计算机CPU类型而定 isize usize

isize 和 usize 的主要应用场景是用作集合的索引。
整形字面量可以用下表的形式书写:

数字字面量 示例
十进制 98_222
十六进制 0xff
八进制 0o77
二进制 0b1111_0000
字节 (仅限于 u8) b'A'

对于整形来说,Rust默认使用i32类型,例如let num = 11num的类型为i32

浮点类型

浮点类型数字 是带有小数点的数字,在 Rust 中浮点类型数字也有两种基本类型: f32f64,分别为 32 位和 64 位大小。默认浮点类型是 f64,在现代的 CPU 中它的速度与 f32 几乎相同,但精度更高。
示例

rust 复制代码
fn main() {
    let x = 5.0; // f64

    let y: f32 = 1.0; // f32
}

序列

Rust 提供了一个非常简洁的方式,用来生成连续的数值,例如 1...6,生成从 1 到 4 的连续数字,不包含 6 ;1...=6,生成从 1 到 5 的连续数字,包含 6,它的用途很简单,常常用于循环中:

rust 复制代码
for i in 1..=6 {
    println!("{}",i);
}

序列只允许用于数字或字符类型,原因是:它们可以连续,同时编译器在编译期可以检查该序列是否为空,字符和数字值是 Rust 中仅有的可以用于判断是否为空的类型。如下是一个使用字符类型序列的例子:

字符类型

字符可以把它理解为英文中的字母,中文中的汉字。Rust 的字符不仅仅是 ASCII,所有的 Unicode 值都可以作为 Rust 字符,包括单个的中文、日文、韩文、emoji 表情符号等等,都是合法的字符类型。关于Unicode参考文章

由于 Unicode 都是 4 个字节编码,因此字符类型也是占用 4 个字节:
Rust 的字符只能用 '' 来表示, "" 是留给字符串的。

rust 复制代码
fn main() {
    let x = '余';
    println!("{}",std::mem::size_of_val(&x)); // 4 
}

bool类型

Rust 中的布尔类型有两个可能的值:true false,布尔值占用内存的大小为 1 个字节:

fn main() {

let ok = true;

let pass: bool = false; // 使用类型标注,显式指定f的类型

if ok{
  //.....
}

}

使用布尔类型的场景主要在于流程控制.

单元类型

单元类型可以理解为一个站位的类型。什么意思?main函数大家都知道,这个函数返回什么呢?这种没有实际返回值的函数在Rust中称为"发散函数",例如println!()也是一样。

相关推荐
一颗花生米。2 小时前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
问道飞鱼2 小时前
Java基础-单例模式的实现
java·开发语言·单例模式
学习使我快乐012 小时前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
通信仿真实验室3 小时前
(10)MATLAB莱斯(Rician)衰落信道仿真1
开发语言·matlab
勿语&3 小时前
Element-UI Plus 暗黑主题切换及自定义主题色
开发语言·javascript·ui
2401_857622666 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589366 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰6 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
ChinaDragonDreamer6 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
IT良6 小时前
c#增删改查 (数据操作的基础)
开发语言·c#