05-泛型实现
4.2.2 泛型实现
我们可以为泛型编写impl代码块,但由于额外的泛型参数,它在这里会变得冗长。让我们在结构体Container
// generic_struct_impl.rs
struct Container<T> {
item: T
}
impl Container<T> {
fn new(item: T) -> Self {
Container { item }
}
}
fn main() {
// stuff
}
让我们对它进行编译,得到以下错误提示信息:
错误提示信息提示我们无法找到泛型T。当为任何泛型编写impl代码块时,都需要在使用它之前声明泛型参数。T就像一个变量—— 一个类型变量,我们需要先声明它。因此,需要在impl之后添加
impl<T> Container<T> {
fn new(item: T) -> Self {
Container { item }
}
}
经过此修改,上述代码通过了编译。之前的impl代码块实际上意味着我们正在为所有类型T实现这些方法,它们会出现在Container
impl Container<u32> {
fn sum(item: u32) -> Self {
Container { item }
}
}
在上述代码中,我们实现了一个名为sum的方法,它只会出现在Container