可以使用'Into'将'&str'或'&String'传递给Rust中的函数?

ide*_*n42 1 rust

在Rust中,函数可能需要Into<String>:

fn get_by_key<S: Into<String>>(&self, key: S) -> Option<&Value>;
Run Code Online (Sandbox Code Playgroud)

是否可以传入对字符串的引用,因此String在将函数传递给函数时不需要克隆(使用类似的东西Into<&String>>)?

Mat*_*eck 5

您可以简单地使您的函数接受&str,然后通过&String隐式取消引用来传递一个将工作.

deref强制.

fn main() {
    fn get_by_key(_key: &str) {}

    let s1: &str = "foo";
    let s2: String = "foo".into();

    get_by_key(s1);
    get_by_key(&s2);
}
Run Code Online (Sandbox Code Playgroud)