定义泛型类型的方法需要impl
后加入泛型类型:
struct GenericVal<T>(T,);
impl <T> GenericVal<T> {}
我觉得消除<T>
似乎OK:
struct GenericVal<T>(T,);
impl GenericVal<T> {}
这是任何特殊的考虑?
锈允许您编写只适用于类型参数的一些特定组合impl
块。例如:
struct GenericVal<T>(T);
impl GenericVal<u32> {
fn foo(&self) {
// method foo() is only defined when T = u32
}
}
在这里,类型GenericVal
是通用的,但impl
本身是没有的。
因此,如果你要编写适用于所有类型的impl
的GenericVal<T>
块,你必须首先声明的impl
本身(否则,T
会尝试查找一个名为T
类型)的类型参数。
struct GenericVal<T>(T);
impl<T> GenericVal<T> {
fn foo(&self) {
// method foo() is always present
}
}
该宣言还可以让你有一个可以多次使用,迫使类型是相同的单一类型的参数。
struct GenericVal<T, U>(T, U);
impl<V> GenericVal<V, V> {
fn foo(&self) {
// method foo() is only defined when T = U
}
}