为什么在 Rust 中定义字符串文字时需要使用 &str?

Pha*_*wen 7 string reference rust

str为什么我这里不能使用?

let question: &str = "why";
Run Code Online (Sandbox Code Playgroud)

str和 和有什么区别&str

我明白这&表示引用,但我对什么&str是引用感到困惑。

cam*_*024 6

A是内存中某处的未知长度的strUTF-8 编码字节序列。

由于其大小在编译时未知,因此不能直接将其放入堆栈,而是必须使用引用。

字符串文字(即"why"语法)在二进制文件的数据段中创建一个空格,并返回对该位置的引用,该引用是 an &str(特别是 an &'static str,因为它永远不会被删除)。

如果你写let question: str = "why";,这将不会编译,原因相同:let i: i32 = &123;不会编译。

PS("hello")不是元组,它只是&str括号中的一个。如果要使用单个元素创建元组,请添加尾随逗号:let hello: (&str,) = ("hello",);