我需要知道+运算符的目的和最后的'static关键字.我理解'static是指生命周期,但它在此代码中解决了什么目的.
pub trait Group {
type ColumnValue: Sized + Clone + Eq + Hash + 'static;
// ...methods...
}
Run Code Online (Sandbox Code Playgroud)
我从llamadb项目的源文件中提取了此代码文本.
在该上下文中,type X: Y表示X具有边界的某种类型Y.+是一种组合边界的方法,X必须满足所有边界.
换句话说,任何implfor Group必须具有相关的类型ColumnValue,Sized 并且 Clone能够和 Eq能够和 Hash能够和 'static.
因此,任何使用的代码都T: Group知道任何类型的东西T::ColumnValue都可以存储在堆栈(Sized)上,克隆,检查相等,散列并且没有非'static生命周期要求.