rust 用'.'?将T转换为&mut T [重复]

alen0pnh  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(136)
    • 此问题在此处已有答案**:

What are Rust's exact auto-dereferencing rules?(4个答案)
2天前关闭。
根据我的理解,next需要一个&mut Test,但是create_test()返回一个Test
为什么可以编制?
我猜测.会隐式地将Test转换为&mut Test,我不确定。有人能解释更多吗?

pub struct Test {
    t: u64,
}

fn create_test() -> Test {
    Test {
        t: 1
    }
} 

impl Test {
    pub fn next(&mut self) {
        self.t = 10;
    }
}

fn main() {
    let mut t = Test { t: 20 };
    t.next();

    create_test().next();  // here
}
yeotifhr

yeotifhr1#

本书的Method-call expressions部分对此进行了解释。
当查找方法调用时,接收器可以被自动解引用或借用以便调用方法。
这正是这里所发生的,rust编译器自动借用返回的值create_test

相关问题