等号在traitbound中是什么意思?
例如在 raw_vec.rs 中:
pub struct RawVec<T, A: AllocRef = Global> {
ptr: Unique<T>,
cap: usize,
alloc: A,
}
我可以看到 Global 是一个实现 AllocRef 特征的结构。
我很惊讶我在 Rust 书籍中找不到任何解释。我感谢任何指向该主题文档的链接。
如果我不得不猜测这是一种进一步限制 'A' 可以采用的实现的方法,但是为什么根本需要 'A' 泛型类型?这似乎简单定义字段alloc作为Global。同样,这只是一个猜测。澄清表示赞赏。
谢谢!
回答
它是默认的泛型类型。除非您在具体实现中明确指定另一个,否则将使用它。它在锈书中提到:
当我们使用泛型类型参数时,我们可以为泛型类型指定一个默认的具体类型。如果默认类型有效,这消除了 trait 的实现者指定具体类型的需要。为泛型类型指定默认类型的语法是
<PlaceholderType=ConcreteType>在声明泛型类型时。