Rust基础类型与变量全解析

1. 基本类型

  • 数值类型

    • 有符号整数:i8i16, i32, i64, i128, isize
    • 无符号整数:u8u16, u32, u64, u128, usize
    • 浮点数:f32(单精度), f64(双精度,默认)

    注意isizeusize 的大小取决于目标平台的指针大小(32 位平台为 4 字节,64 位平台为 8 字节)

  • 字符串切片&str

  • 布尔类型truefalse

  • 字符类型char 表示单个 Unicode 字符(存储为 4 字节),如 'A', '中', '😻'

  • 单元类型(),其唯一可能的值也是 ()

**isize /usize **

  • isize有符号 整型,宽度 = 系统指针大小(32 位系统 = 32bit,64 位系统 = 64bit)

  • usize无符号 整型,宽度 = 系统指针大小(同上)

  • 唯一用途 :用于数组 / 集合索引、长度、内存地址偏移

  • 核心规则 :Rust 容器下标、长度必须用 usize

  • 取值范围

    • 64 位系统:usize 0~2⁶⁴-1;isize -2⁶³ ~ 2⁶³-1
    • 32 位系统:usize 0~2³²-1;isize -2³¹ ~ 2³¹-1

2.Range 序列

定义start..end 左闭右开区间 [start, end)

基础写法

  • 1..5 → 1,2,3,4
  • 1..=5 → 1,2,3,4,5(包含右端点

类型

  • .. :RangeFull
  • a.. :RangeFrom
  • ..b :RangeTo
  • a..=b :RangeInclusive

用途

  • for 循环遍历:for i in 0..10 {}
  • 切片索引:arr[2..5]
  • 区间判断:(1..10).contains(&3)

特点

  • 轻量、迭代器、不占额外内存

  • 只能用于数字类型(整数为主)

    a..b → 左闭右开[a, b)
    a..=b → 全闭区间[a, b]
    ..b → 开头到 b(不含)[.., b)
    ..=b → 开头到 b(含)[.., b]
    a.. → a 到结尾[a, ..]
    .. → 全部范围

other

1. 为何手动设置变量可变性?

  • Rust 默认变量不可变(immutable),安全、并发安全、编译器优化。
  • 必须显式加 mut 才可变,可读性 + 安全性:一眼知道哪些会变。

2. 变量命名

  • 字母、数字、下划线,以字母 / 下划线开头
  • 大小写敏感,习惯 snake_case(下划线分隔)
  • 不能用关键字、不能数字开头

3. 变量绑定

  • let x = 10;绑定(binding),不是简单赋值
  • 将值绑定到变量,默认不可变、有所有权、作用域管理

4. 变量可变性

  • 默认不可变:let x = 1; 不能修改
  • 可变:let mut x = 1; 可重新赋值

5. 下划线忽略未使用变量

  • let _x = 10; 编译器不提示「未使用变量」
  • 单独 let _; 可忽略任意值

6. 变量解构(Destructuring)

  • let (a, b) = (1, 2); 同时绑定多个变量
  • 可用于元组、结构体、枚举等

7. 解构式赋值

  • 可在赋值语句直接解构:(a, b) = (3, 4);
  • 对已有变量批量更新

8. 变量 vs 常量

  • 变量:let,可 mut、可隐藏 (shadow)、可编译器自动推导类型
  • 常量:const永远不可变、必须写类型、编译期值确定、无 mut
相关推荐
纤纡.2 小时前
基于 PyQt5 的桌面应用开发实战:登录、预测、计算器、摄像头多功能系统
开发语言·人工智能·qt·计算机视觉
SamDeepThinking2 小时前
开篇词:6000万会员规模下,我们是怎么做秒杀系统的
java·后端·架构
于慨2 小时前
flutter基础组件用法
开发语言·javascript·flutter
历程里程碑2 小时前
二叉树---翻转二叉树
开发语言·c++·elasticsearch·链表·搜索引擎·tornado·dash
程序员书虫2 小时前
Spring 依赖注入一次讲透:`@Autowired`、`@Resource`、`@Qualifier`、`@Primary` 到底怎么选
java·后端·面试
Rsun045512 小时前
16、Java 迭代器模式从入门到实战
java·开发语言·迭代器模式
We་ct2 小时前
Git 核心知识点全解析
开发语言·前端·git·gitee·github
SamDeepThinking2 小时前
Spring Bean作用域的设计与使用
java·后端·面试
iDao技术魔方2 小时前
Bun v1.3.12 深度解析:新特性、性能优化与实战指南
开发语言·javascript·visual studio code