繁体   English   中英

为什么将&应用于字符串会返回&str?

[英]Why does applying & to a String return a &str?

在这个示例代码中, 来自Rust文档

fn takes_str(s: &str) { }

let s = String::from("Hello");

takes_str(&s);

导致&s变成&str而不是&String的幕后到底发生了什么? 该文档似乎表明正在进行一些取消引用,但是我认为*是用于取消引用,而不是&

这里发生的事情称为deref强制 这些允许使用对实现Deref特征的类型的引用来代替对其他类型的引用。 如您的示例所示, &String可以在需要&str任何地方使用,因为String实现Derefstr Deref

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM