可以根据不同的泛型类型实现不同的函数
pub struct Wrapper<T> {
pub inner: T
}
impl <T> Wrapper<T>
where T:std::fmt::Debug
{
pub fn debug(&self) {
println!("{:?}", self.inner);
}
}
我们可以说,当T实现了Debug这个trait的时候,给Wrapper这个结构体实现debug函数,所以
fn main() {
let w = multiple_impl::Wrapper{
inner: String::new()
};
w.debug()
}
这样调用是可以的
struct Foo;
fn main() {
let w = multiple_impl::Wrapper{
inner: Foo{}
};
w.debug()
}
这样就会有编译错误,因为Foo这个结构体没有实现Debug trait