尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

附录A. Rust 关键字速查表

附录A. Rust 关键字速查表
📅 发布时间:2026/7/21 23:16:59

附录A. Rust 关键字速查表

本附录提供 Rust 语言所有关键字的完整速查表,包括当前使用的关键字、保留关键字以及特殊标识符。


当前使用的关键字

声明与定义类

关键字用途示例
fn定义函数或方法fn add(a: i32, b: i32) -> i32 { a + b }
let声明变量绑定let x = 5;
mut声明可变变量或引用let mut count = 0;
const定义编译时常量const MAX_SIZE: usize = 100;
static定义静态变量(全局生命周期)static GLOBAL: i32 = 42;
struct定义结构体struct Point { x: i32, y: i32 }
enum定义枚举类型enum Color { Red, Green, Blue }
union定义联合体(unsafe)union Data { i: i32, f: f32 }
type定义类型别名type Result<T> = std::result::Result<T, Error>;
trait定义 Trait(接口)trait Draw { fn draw(&self); }
impl实现方法或 Traitimpl Point { fn new() -> Self { ... } }

控制流类

关键字用途示例
if条件分支if x > 0 { println!("positive"); }
else条件分支的否定情况if x > 0 { ... } else { ... }
match模式匹配match value { Some(x) => x, None => 0 }
loop无限循环loop { break; }
while条件循环while count < 10 { count += 1; }
for迭代循环for i in 0..10 { println!("{}", i); }
break跳出循环loop { if done { break; } }
continue跳过本次循环for i in 0..10 { if i % 2 == 0 { continue; } }
return从函数返回fn get_value() -> i32 { return 42; }

模块与可见性类

关键字用途示例
mod定义模块mod utils { pub fn helper() {} }
pub公开可见性pub struct Point { pub x: i32 }
use导入路径到作用域use std::collections::HashMap;
crate当前 crate 的根路径use crate::utils::helper;
super父模块路径use super::parent_function;
self当前模块路径或方法接收者use self::inner_mod;或fn method(&self)
Self实现类型的别名impl Point { fn new() -> Self { ... } }
extern链接外部 crate 或声明外部函数extern crate serde;或extern "C" { fn abs(x: i32) -> i32; }

所有权与生命周期类

关键字用途示例
ref在模式中创建引用let ref x = 5;等价于let x = &5;
move强制闭包获取所有权let closure = move || println!("{}", x);
as类型转换或重命名导入let x = 5 as f64;或use std::io::Result as IoResult;
where泛型约束子句fn func<T>(x: T) where T: Display { ... }
dyn动态分发 Trait 对象let obj: Box<dyn Draw> = Box::new(circle);

异步编程类

关键字用途示例
async定义异步函数或块async fn fetch_data() -> String { ... }
await等待异步操作完成let data = fetch_data().await;

Unsafe 与 FFI 类

关键字用途示例
unsafe标记不安全代码块或函数unsafe { *raw_ptr = 42; }

宏与属性类

关键字用途示例
macro_rules!定义声明式宏macro_rules! say_hello { () => { println!("Hello!"); } }

其他关键字

关键字用途示例
infor循环的一部分for item in collection { ... }
box堆分配(已弃用,使用Box::new)let b = box 5;(不推荐)

保留关键字(2015 Edition)

这些关键字在 Rust 2015 Edition 中保留,但尚未使用,为未来功能预留:

关键字预留用途
abstract可能用于抽象类型或方法
become可能用于尾调用优化
do可能用于循环或块
final可能用于继承控制
macro可能用于宏定义(已部分使用)
override可能用于方法重写
priv可能用于私有可见性
typeof可能用于类型查询
unsized可能用于动态大小类型
virtual可能用于虚方法
yield可能用于生成器(已在 nightly 中使用)

保留关键字(2018+ Edition)

Rust 2018 Edition 及之后新增的保留关键字:

关键字预留用途
try可能用于错误处理(已有try块在 nightly)

特殊标识符

这些不是严格的关键字,但在特定上下文中有特殊含义:

生命周期标识符

标识符含义示例
'static静态生命周期(整个程序运行期间)let s: &'static str = "hello";
'_匿名生命周期(编译器推断)fn func(x: &'_ str) { ... }

特殊路径

标识符含义示例
$crate宏中引用定义宏的 crate$crate::utils::helper()

特殊属性

标识符含义示例
cfg条件编译#[cfg(target_os = "linux")]
test标记测试函数#[test] fn test_add() { ... }
derive自动派生 Trait#[derive(Debug, Clone)]
allow/warn/denyLint 控制#[allow(dead_code)]

关键字使用注意事项

1. 原始标识符(Raw Identifiers)

如果需要使用关键字作为标识符名称,可以使用r#前缀:

// 使用关键字作为变量名letr#fn="function name";letr#match="match keyword";// 使用关键字作为函数名fnr#return()->i32{42}// 调用letresult=r#return();

使用场景:

  • 与其他语言的 FFI 交互时,对方的函数名可能是 Rust 关键字
  • 与旧版本 Rust 代码兼容

2. 关键字的上下文敏感性

某些标识符只在特定上下文中是关键字:

// `union` 是关键字,但可以作为字段名structData{union:bool,// ❌ 编译错误}// 需要使用原始标识符structData{r#union:bool,// ✅ 正确}

3. Edition 差异

不同 Edition 的关键字可能不同:

// Rust 2015: `async` 不是关键字letasync=5;// ✅ 在 2015 Edition 中可以// Rust 2018+: `async` 是关键字letasync=5;// ❌ 编译错误letr#async=5;// ✅ 使用原始标识符

常见关键字组合模式

1. 函数定义模式

// 基本函数fnfunction_name(){}// 带参数和返回值fnadd(a:i32,b:i32)->i32{a+b}// 泛型函数fngeneric<T>(value:T)->T{value}// 带生命周期fnlongest<'a>(x:&'astr,y:&'astr)->&'astr{x}// 异步函数asyncfnfetch()->String{"data".to_string()}// Unsafe 函数unsafefndangerous(){}// 外部函数extern"C"fncallback(){}// 常量函数constfnconst_add(a:i32,b:i32)->i32{a+b}

2. 结构体与实现模式

// 定义结构体pubstructPoint{pubx:i32,puby:i32,}// 实现方法implPoint{pubfnnew(x:i32,y:i32)->Self{Self{x,y}}pubfndistance(&self)->f64{((self.x.pow(2)+self.y.pow(2))asf64).sqrt()}}// 实现 Traitimplstd::fmt::DisplayforPoint{fnfmt(&self,f:&mutstd::fmt::Formatter)->std::fmt::Result{write!(f,"({}, {})",self.x,self.y)}}

3. 模块与导入模式

// 定义模块modutils{pubfnhelper(){}pub(crate)fninternal(){}pub(super)fnparent_only(){}}// 导入usestd::collections::HashMap;usestd::io::{self,Read,Write};usecrate::utils::helper;usesuper::parent_function;// 重导出pubuseself::utils::helper;

4. 匹配与控制流模式

// match 表达式matchvalue{Some(x)ifx>0=>println!("positive"),Some(x)=>println!("non-positive"),None=>println!("none"),}// if letifletSome(x)=option_value{println!("{}",x);}// while letwhileletSome(x)=iterator.next(){println!("{}",x);}// for 循环foriin0..10{ifi%2==0{continue;}println!("{}",i);}// loop 带标签'outer:loop{loop{break'outer;}}

快速查找索引

按功能分类

变量与常量:let,mut,const,static

类型定义:struct,enum,union,type,trait

实现:impl,fn

控制流:if,else,match,loop,while,for,break,continue,return

模块系统:mod,pub,use,crate,super,self,Self,extern

所有权:ref,move,as

泛型与约束:where,dyn

异步:async,await

安全:unsafe

宏:macro_rules!

按字母排序

as,async,await,break,const,continue,crate,dyn,else,enum,extern,fn,for,if,impl,in,let,loop,match,mod,move,mut,pub,ref,return,self,Self,static,struct,super,trait,type,union,unsafe,use,where,while


本附录小结

  • Rust 当前有40+ 个活跃关键字,涵盖声明、控制流、模块、所有权、异步等各个方面
  • 保留关键字为未来功能预留,不能用作标识符
  • 使用原始标识符(r#keyword) 可以在必要时使用关键字作为名称
  • 不同Edition的关键字集合可能不同,升级时需注意
  • 理解关键字的组合模式有助于快速编写惯用的 Rust 代码

提示:将本速查表保存为书签,在编码时快速查阅!

相关新闻

  • OMPS-N20 L2 NM 甲醛 (HCHO) 总柱扫描轨道
  • 【万字文档+源码】基于SpringBoot+Vue在线教育系统-可用于毕设-课程设计-练手学习-学习资料分享
  • 国产化 ECU 刷写上位机(CAN FD)开发与实操指南

最新新闻

  • Windows 端口代理 防火墙规则
  • 2026年南昌短视频制作/拍摄/剪辑/代运营/策划公司推荐:专业口播与工厂产品短视频创意文案精选 - 甄选服务推荐
  • FreeCAD扫掠功能详解:参数化建模与弹簧实例实战
  • LLM有状态故障转移:ContinuityBench评测与工程实践指南
  • 工业时序数据融合:从“看不懂“到“读得懂“的技术突围
  • Kafka消费者核心机制与生产环境优化实践

日新闻

  • AI云原生实战05-金融AI上云最难的不是技术,是“不出事“——TCE银行风控架构拆解
  • 2026年GEOSEO优化公司选型深度测评:五大硬核标准严选,这六家重塑搜索增长新格局 - 品牌前沿专家
  • **核验!2026年7月卡地亚香港**售后网点地址及服务电话公告 - 卡地亚服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号