等号在特征边界中意味着什么?

问题描述 投票:0回答:1

例如

raw_vec.rs

pub struct RawVec<T, A: AllocRef = Global> {
    ptr: Unique<T>,
    cap: usize,
    alloc: A,
}

我可以看到

Global
是一个实现
AllocRef
特征的结构。如果我不得不猜测这是一种进一步限制“A”可以采用的实现的方法,那么为什么还需要“A”泛型类型呢?将字段
alloc
定义为
Global
似乎更简单。

这到底是什么意思?我很惊讶我在 Rust 书籍中找不到任何解释。我很欣赏有关该主题的任何文档链接。

generics rust syntax traits
1个回答
14
投票

这是一个default泛型类型。除非您在具体实现中明确指定另一个,否则它将被使用。 rust 书中提到过

当我们使用泛型类型参数时,我们可以指定一个默认的具体参数 type 为泛型类型。这消除了对实施者的需要 如果默认类型有效,则指定具体类型的特征。这 为泛型类型指定默认类型的语法是

<PlaceholderType=ConcreteType>
声明泛型类型时。

© www.soinside.com 2019 - 2024. All rights reserved.