如何拥有一个可以与另一个& mut自我功能共享的& mut自我功能?

时间:2017-10-26 03:42:10

标签: function struct reference rust self

我有一个具有许多属性的结构。此结构具有一个作出决策的函数,并将相应的属性传递给对引用的属性执行算术运算的不同函数。为什么我不能做这种多级参考传递生锈?

https://play.rust-lang.org/?gist=ef0cfc561afc2e4374475b93b2f62ab0&version=stable

struct Foo {
    pub a: u8
}

impl Foo {
    pub fn new() -> Foo {
        Foo {
            a: 1
        }
    }

    pub fn calculate(&mut self) {
        self.a += 1; // This is perfectly fine
        self.add_later(&mut self.a); // This throws an error
    }

    fn add_later(&mut self, arg: &mut u8) {
        *arg += 1;
    }
}

fn main() {
    let mut bar = Foo::new();
    println!("{}", bar.a);
    bar.calculate();
    println!("{}", bar.a);
}

0 个答案:

没有答案