【发布时间】:2015-05-19 21:18:13
【问题描述】:
我是 rust 新手,我有一个关于借用其参数的函数的问题。
在 C++ 中,函数的类型签名单独指定是否通过引用获取参数;调用该函数的代码不需要明确指出它正在传递一个引用。举个例子:
// The function signature indicates x should be passed by reference.
void increment(int& x) {
++x;
}
void main() {
int y = 0;
increment(y); // y is implicitly passed by reference
// y is now 1
}
另一方面,Rust 似乎不允许这样做。以下代码将无法编译:
fn output(x: &isize) {
println!("{}", x);
}
fn main() {
let y: isize = 0;
output(y); // Error.
// output(&y); <- this is ok though
}
通过使用方法语法时,如果函数签名采用&self 或&mut self,则这些借用发生在调用者不使用& 或&mut 的情况下。
一般函数参数不会发生自动借用是否有原因,如果是,为什么在使用方法语法时会发生这种情况?
【问题讨论】:
标签: rust