高级类型
类型别名创建类型同义词
从不返回的 !,这类函数称为发散函数
动态大小类型的黄金规则:必须将动态大小类型的值置于某种指针之后。
泛型函数默认只能用于在编译时已知大小的类型。然而可以使用如下特殊语法来放宽这个限制:
fn generic<T: ?Sized>(t: &T) { // --snip-- }
宏
宏(Macro)指的是 Rust 中一系列的功能:
- 声明(Declarative)宏,使用
macro_rules!
- 过程(Procedural),其有三种类型:
- 自定义
#[derive]
宏 - 类属性(Attribute)宏
- 类函数宏
- 自定义
Rust 最常用的宏形式是 声明宏(declarative macros)。它们有时也被称为 “macros by example”、“macro_rules!
宏” 或者就是 “macros”。其核心概念是,声明宏允许我们编写一些类似 Rust match
表达式的代码。
第二种形式的宏被称为 过程宏(procedural macros),因为它们更像函数(一种过程类型)。过程宏接收 Rust 代码作为输入,在这些代码上进行操作,然后产生另一些代码作为输出,而非像声明式宏那样匹配对应模式然后以另一部分代码替换当前代码。
类属性宏与自定义派生宏相似,不同于为 derive
属性生成代码,它们允许你创建新的属性。它们也更为灵活;derive
只能用于结构体和枚举;属性还可以用于其它的项,比如函数。