- 此问题在此处已有答案**:
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
}
1条答案
按热度按时间yeotifhr1#
本书的Method-call expressions部分对此进行了解释。
当查找方法调用时,接收器可以被自动解引用或借用以便调用方法。
这正是这里所发生的,rust编译器自动借用返回的值
create_test
。