Reference 将参数引用转发到Rust中的函数
当我将一个引用参数转发给Rust中另一个同样需要引用参数的函数时,我很难弄清楚发生了什么 基本上,我对一个值何时是引用(需要用Reference 将参数引用转发到Rust中的函数,reference,rust,Reference,Rust,当我将一个引用参数转发给Rust中另一个同样需要引用参数的函数时,我很难弄清楚发生了什么 基本上,我对一个值何时是引用(需要用*取消引用)以及何时只是一个可以直接使用的值感到困惑。比如说, fn second(s: &String) { println!("Got string '{}'", *s); // Can also use s } fn first(s: &String) { second(s); //
*
取消引用)以及何时只是一个可以直接使用的值感到困惑。比如说,
fn second(s: &String) {
println!("Got string '{}'", *s); // Can also use s
}
fn first(s: &String) {
second(s); // Can also use &s
}
fn main() {
let s = String::from("Hello, World!");
first(&s);
}
如上所示,将
s
从first
传递到second
并在second
内部打印s
的四种组合中的任何一种都有效。我的直觉告诉我,s
insidefirst
是一个引用,因此&s
将是一个双重引用,而s
insidesecond
是一个需要取消引用的引用,但它实际上似乎并不重要。这是怎么回事?你实际上问了两个不同的问题;我已链接到相应的副本。TL;博士:println
自动获取引用,并且Deref
强制为您将&String
转换为&String
。同样相关:感谢您的帮助!