大白话rust系列02原始数据类型

Rust中最简单的数据类型称为原始数据类型

一、标量类型(Scalar Types)

  1. 整数类型(Integer)
长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
平台相关 isize usize

isize和usize是什么呀???

这两个类型的位数取决于你的计算机类型,32位计算机,isize和usize和i32,u64一样。64位计算机,isize和usize和i64,u64一样。

整个两种类型,有啥实际用途?

具体请看这篇文章:大白话rust系列03 isize和usize

2. 浮点类型(Floating-Point)

类型 精度
f32 单精度(32 位)
f64 双精度(64 位)
  • 默认浮点类型是 f64

  • 遵循 IEEE-754 标准

rust 复制代码
let x: f32 = 3.14;
let y: f64 = 2.71828;

3. 布尔类型(Boolean)

  • bool,只有两个值:true 和 false

  • 占 1 个字节

rust 复制代码
let t: bool = true;
let f: bool = false;

4. 字符类型(Character)

rust的char作为字符,用单引号 表示,如'6','A' ,'大' 等。每个char在内存中都是数字,如A是65。而汉字"友"是数字21451。char占32位也就是4个字节。将字符变为数字的编码方式是Unicode

ASCII 共有 128 个字符(编码范围 0--127)。

如果算上扩展 ASCII(Extended ASCII),则通常有 256 个字符 (0--255),但扩展部分并没有统一标准。扩展 ASCII 具体是哪些字符,取决于你用的是哪个代码页,在此不做深究

这里提到ASCII,是因为,它的字符数刚好满足u8的大小范围。所以,rust是可以安全地将u8转换为char的,如下面的代码所示

rust 复制代码
fn main() {
    let numberToChar = 100;
    println!("numberToChar {} as char = {}", numberToChar, numberToChar as u8 as char);
}

运行结果:

rust中char为了能覆盖所有的字符,一个char用了四个字节存储

但是char在字符串中,并不会每个字符都采用四字节,它会尽可能地使用小位数来节省内存

rust 复制代码
fn main() {
    println!("Size of char : {}",std::mem::size_of::<char>());
    let c = '我';
    println!("'我' 占 {} 个字节", c.len_utf8());
}

运行结果:

那么rust还有哪些原始数据类型呢

复合类型(Compound Types)

Rust 有 2 种原始复合类型:

1. 元组(Tuple)

2. 数组(Array)

关于这两种类型后面再单独介绍,再次不多做阐述

总结表

类别 类型
标量 - 整数 i8 i16 i32 i64 i128 isize / u8 u16 u32 u64 u128 usize
标量 - 浮点 f32 f64
标量 - 布尔 bool
标量 - 字符 char
复合 - 元组 (T1, T2, ...)
复合 - 数组 [T; N]

以上共 4 种标量类型 + 2 种复合类型 ,就是 Rust 的全部原始数据类型。此外还有单元类型 () (零元组)和永不返回类型 !(never type),它们也属于原始类型范畴。

相关推荐
unconditional10 小时前
我拆了 sdkm 的自定义 SDK 机制:所谓“内置”,就是官方提前帮你填好的表
rust·开源
Ramble_Naylor1 天前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
Ramble_Naylor1 天前
Rust深度解读:异步流(Async Streams)与生成器的处理艺术
开发语言·后端·rust
RobinDevNotes1 天前
Memvid 把 Agent 长期记忆塞进一个文件
人工智能·rust·openresty
miofly1 天前
GitHub 今日推荐|agent-desktop:通过无障碍树让 AI 代理直接操作桌面应用
rust·开源·github
geovindu1 天前
rust:N-Barrier Pattern
开发语言·后端·设计模式·rust·屏障模式·并发型模式
Ramble_Naylor2 天前
Rust深度解读:高性能 Web 网关与 Axum 架构剖析
前端·架构·rust
Hello.Reader2 天前
100 人同时操作一座三维城市,为什么不需要服务器渲染 6000 帧?Rust + wgpu 多端并发架构实战
服务器·架构·rust
遇码2 天前
2026-11-01-daw-retry-banner-body
人工智能·ai·rust·数据分析·大模型·agent
不积跬步无以至千里mmbb262 天前
rust_analysis
开发语言·后端·rust