我需要知道+
运算符的目的以及最后的'static
关键字。我理解'static
指的是生命周期,但它在此代码中解决了什么目的。
pub trait Group {
type ColumnValue: Sized + Clone + Eq + Hash + 'static;
// ...methods...
}
中提取了此代码文本
答案 0 :(得分:6)
在该上下文中,type X: Y
表示X
是某种带有边界Y
的类型。 +
是一种组合边界的方式,使X
必须满足所有边界。
换句话说,impl
的任何Group
都必须具有ColumnValue
和 Sized
的关联类型Clone
和 Eq
可以和 Hash
能和 'static
。
因此,使用T: Group
的任何代码都知道T::ColumnValue
类型的任何内容都可以存储在堆栈(Sized
)上,克隆,检查相等性,散列并且没有非'static
终身要求。