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
相关推荐
cui_ruicheng16 分钟前
Python数据分析(一):数据分析概述与环境搭建
开发语言·python·数据分析
青山木22 分钟前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
卷无止境32 分钟前
Python的collections模块:那些被低估的"瑞士军刀"
后端·python
心平气和量大福大34 分钟前
C#-WPF-UserControl-生命周期(加载 退出)
开发语言·c#·wpf
卷无止境37 分钟前
Python的方法解析顺序:一场关于继承顺序的精妙设计
后端·python
sunywz1 小时前
【c#】 Web Deploy一键发布,IIS部署全流程
开发语言·前端·c#
宁&沉沦1 小时前
Chrome 扩展 Manifest 字段版本支持一览(全量)
前端·后端·编辑器
Brilliantwxx1 小时前
【Linux】 软件包管理器(yum)+ Vim使用
linux·运维·服务器·开发语言·编辑器·vim
雪的季节1 小时前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活1 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试