2.9 KiB
2.9 KiB
1记号
2 词法结构
2.2关键字
可分为三类:
- strict:只能用在固定的上下文中
- reserved:保留以待将来使用
- weak:仅在某些上下文中有特定的意义
3 宏
4 Crates和源文件
5 条件编译
6 条目
6.1模块
模块在一个crate的内部进行划分。其形式为mod {}
。
没有正文的模块是从外部加载的。外部的模块如果没有path
属性,则文件路径即等同于模块路径。
crate // 模块路径crate,即文件路径lib.rs(对于库而言)
crate::util // 模块路径crate::util,即文件路径./util.rs或util/mod.rs
// 注:./util.rs或./util/mod.rs不允许同时存在
6.3使用的声明(use)
6.10静态条目
静态条目类似于常量,只不过它代表的是程序中精确的内存位置。所有对静态条目的引用都会指向内存中相同的位置。静态条目有静态的生命周期,即Rust程序中最长的生命周期。静态条目在程序结束的时候不会调用drop。
6.13外部块
外部块是基本的Rust外部程序接口,提供了不存在于当前crate中的条目。
有两种外部块:函数和静态量。只能在unsafe
的上下文使用外部块。
在语法上unsafe
可以出现在extern
之前,但在语义上又不行。这样在token流中删除它之前,宏就可以使用这样的语法从而使用unsafe
了。
-
函数
-
静态量
-
ABI
extern "C" // 即extern fn foo();C编译器支持的默认值。
-
可变参数函数
-
外部块上的属性
-
函数参数的属性
7 属性
8 语句与表达式
8.1 语句
8.2.4 操作符表达式
- 类型转换表达式
8.2.5分组表达式
分组表达式是用圆括号括起来的表达式。应将分组表达式视为一个整体。
8.2.15范围表达式
语法 | 类型 | 含义 |
---|---|---|
start..end |
std::ops::Range |
start\le x\lt end |
start.. |
std::ops::RangeFrom |
start\le x |
..end |
std::ops::RangeTo |
x\lt end |
.. |
std::ops::RangeFull |
- |
start..=end |
std::ops::RangeInclusive |
start\le x\le end |
..=end |
std::ops::RangeToInclusive |
x\le end |
// 在for循环中使用Range
for i in 1..11 {
println!("{}", i);
}
9 模式
10 类型系统
11 特殊类型、特性
12 Names
13 内存模型
14 连接
15 不安全性
16 常量计算
17 ABI
本节描述一些影响ABI的属性,这些ABI来自于编译生成的crate。关于外部函数,参考6.4函数。关于外部库的ABI,参考6.13外部块。