注意这儿说的是“函数”不是“方法”,也就是说不带self的函数
trait Foo{
fn foo(){
println!("foo");
}
}
struct Bar1;
struct Bar2;
impl Foo for Bar1{}
impl Foo for Bar2{}
fn main(){
println!("{:p}",&Bar1::foo);
println!("{:p}",&Bar2::foo);
}
开始以为Bar1::foo和Bar2::foo的地址是一样的,也就是同一份代码,可实际上rust为每个类型重新复制了一份代码,这个在某些时候会造成代码膨胀
Play地址:http://is.gd/IWILdR
0x7f0ab699c150
0x7f0ab699c178