computer_knowledge_notes/Languages/Rust/reference.md

2.9 KiB
Raw Blame History

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外部块

18 Rust的运行时

19 附录