等号在 trait bound 中是什么意思?

use*_*769 4 rust

例如在 raw_vec.rs 中:

pub struct RawVec<T, A: AllocRef = Global> {
    ptr: Unique<T>,
    cap: usize,
    alloc: A,
}
Run Code Online (Sandbox Code Playgroud)

我可以看到 Global 是一个实现 AllocRef 特征的结构。

我很惊讶我在 Rust 书籍中找不到任何解释。我感谢任何指向该主题文档的链接。

如果我不得不猜测这是一种进一步限制 'A' 可以采用的实现的方法,但是为什么根本需要 'A' 泛型类型?这似乎简单定义字段alloc作为Global。同样,这只是一个猜测。澄清表示赞赏。

谢谢!

Sve*_*rev 5

它是默认的泛型类型。除非您在具体实现中明确指定另一个,否则将使用它。它在锈书中提到:

当我们使用泛型类型参数时,我们可以为泛型类型指定一个默认的具体类型。如果默认类型有效,这消除了 trait 的实现者指定具体类型的需要。为泛型类型指定默认类型的语法是 <PlaceholderType=ConcreteType>在声明泛型类型时。