相关类型中+运算符的用途是什么?

时间:2015-12-27 04:27:29

标签: rust

我需要知道+运算符的目的以及最后的'static关键字。我理解'static指的是生命周期,但它在此代码中解决了什么目的。

pub trait Group {
    type ColumnValue: Sized + Clone + Eq + Hash + 'static;

    // ...methods...
}

我从source file from the llamadb project

中提取了此代码文本

1 个答案:

答案 0 :(得分:6)

在该上下文中,type X: Y表示X是某种带有边界Y的类型。 +是一种组合边界的方式,使X必须满足所有边界。

换句话说,impl的任何Group都必须具有ColumnValue Sized的关联类型Clone Eq可以 Hash 'static

因此,使用T: Group的任何代码都知道T::ColumnValue类型的任何内容都可以存储在堆栈(Sized)上,克隆,检查相等性,散列并且没有非'static终身要求。