大白话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),它们也属于原始类型范畴。

相关推荐
遇码4 小时前
macOS 触摸板捏合在 GPUI 里无响应:vendor 打补丁,把手势合成为 cmd+滚轮事件
rust·图形渲染·策略模式·桌面应用·gpui
geovindu4 小时前
rust: Chain of Responsibility Pattern
开发语言·后端·设计模式·rust·责任链模式·行为模式
geovindu6 小时前
rust: Chain of Responsibility Pattern (续)
开发语言·后端·设计模式·rust·责任链模式·行为模式
Amos_Web6 小时前
Rspack 源码解析(二十四):AssetPlugin 如何让图片同时是「URL 字符串」和「真实文件」
前端·rust·前端框架
wflynn1 天前
GitHub 今日推荐|solidcraft:Rust 跨平台参数化 CAD,支持 AI 代理通过 MCP 协议驱动建模
rust·开源·github·cad·3d-modeling·brep
geovindu1 天前
rust: pool Pattern
开发语言·后端·设计模式·rust·对象池简写模式
Source.Liu1 天前
【A11】客户端登录流程笔记
windows·rust
william_yangshun1 天前
WordCraft 观察:纯 Rust 重写文字处理器,把文档变成可编程对象
开发语言·后端·rust·文档自动化