转发Rust中函数的参数引用

时间:2017-04-11 18:34:37

标签: reference rust

当我将一个引用参数转发给Rust中另一个也需要引用参数的函数时,我无法弄清楚发生了什么。

基本上,我很困惑什么时候一个值是一个引用(需要用*取消引用),以及什么时候它只是一个可以直接使用的值。例如,

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);
}

如上所示,将sfirst传递到second并在s内打印second的四种组合中的任何一种都有效。我的直觉说s first是一个引用,因此&s将是一个双引用,s second内的serializing是需要的引用被取消引用,但它似乎并不重要。这是怎么回事?

0 个答案:

没有答案