< 返回版块

chinagxwei 发表于 2020-03-28 23:15

Tags:trait

观看rust相关视频时有相关trait implement for struct 时 有直接 for &mut T 的

trait Foo {
    fn run(&self);
}

struct Bar;

impl Foo for &mut Bar {
    fn run(&self) {
        print!("&mut Bar run!");
    }
}

impl Foo for Bar {
    fn run(&self) {
        print!("Bar run!");
    }
}

这里的 for &mut T 和一般的 for T 的区别在什么地方?为什么会有 for &mut T 的这种形式,主要作用是什么?

评论区

写评论
作者 chinagxwei 2020-03-29 18:43

多谢。把所有可能场景列出来后,这个问题就看出来不一样的地方了 对以下内容的回复:

chenwei767 2020-03-29 12:01

impl Foo for Bar { fn run(&self) { println!("Bar run!"); } }

// impl Foo for &mut Bar 可以覆盖上面的实现. // let b = &mut Bar; // b.run(); impl Foo for &mut Bar { fn run(&self) { println!("&mut Bar run!"); } }

1 共 2 条评论, 1 页