小编Jay*_*ibe的帖子

Rust:如果 &str 应该是指向硬编码二进制文件的指针,那么为什么我可以使它可变并在运行时更改它?

我目前正在尝试了解 Rust 中 &str、str 和 String 之间的区别。我对编程语言非常陌生,并且已经对此感到困惑了一段时间。我知道 String 有一个长度和指针存储在堆栈中,并且该指针指向堆上的一些数据,其中包含字符串数据。我还知道它存储在堆上,因为我们不知道它的字符串数据在运行时会占用多少内存,因此它不能存储在堆栈中。对于 str,我理解它是一个硬编码的二进制值,这意味着它必须是不可变的,而且我们可以得到它的唯一方法是使用引用:&str。如果 &str 必须是不可变的。那么为什么下面的代码不会导致编译器错误呢?请帮忙。

let mut s: &str = "foo";

s = "foobar";
Run Code Online (Sandbox Code Playgroud)

string slice rust borrow-checker

0
推荐指数
1
解决办法
63
查看次数

标签 统计

borrow-checker ×1

rust ×1

slice ×1

string ×1