`&str`是否可以在Rust中包含指向程序内存的指针?

Art*_*hur 7 reference literals rust

关于Rust编程语言的 切片的第4.3节有这一段:

字符串文字是切片

回想一下,我们谈到了存储在二进制文件中的字符串文字.现在我们了解了切片,我们可以正确理解字符串文字:

let s = "Hello, world!";
Run Code Online (Sandbox Code Playgroud)

s这里的类型是&str:它是指向二进制特定点的切片.这也是字符串文字不可变的原因; &str是一个不可变的引用.

现在,正如他们之前所述,一个字符串切片包含一个指针和一个长度的一对(某种形式).对我来说,这段(特别是"我们谈到存储在二进制文件中的字符串文字"和"指向二进制文件的特定点")似乎暗示该指针直接进入程序存储器.不是堆栈,不是堆,而是处理器存储程序所包含的所有指令的实际位置.如果你愿意,可以使用特定的装配线.

这是真的?如果没有,那么他们还能说什么呢?它是如何实际完成的?如果我后来有一个类似的问题,我怎么能自己解决这个问题呢?

lje*_*drz 9

这是真的 - &'static str字符串文字嵌入在二进制文件本身中.它并不是Rust特有的,例如C实现经常做同样的事情.

引用Rust Reference(强调我的):

字符串文字是直接存储在最终二进制文件中的字符串,因此在'static持续时间内有效.

它的类型是'static持续时间借用的字符串切片,&'static str.

有专门设计用于找到这种字符串的程序,例如字符串或只是grep --text.

相关问题:字符串文字:它们去哪里了?.