我看过这个问题,但还是没明白,所以这就是我所知道的(可能是不正确的):
String分配内存,并将指向该内存的指针存储在堆栈上。&str上存储一个指针,并且我假设该指针指向堆上的a 。str如果是这种情况 - 如果 和 都String在堆栈&str上存储指向String堆上内存位置的指针 - 这是否意味着和str(不是引用)是相同的?
这篇文章解释得很好,并且有一些关于两者如何工作的视觉效果: https: //blog.thoughtram.io/string-vs-str-in-rust/。
\n回答你的问题,不,它们不一样。他们只能指出同一件事。
\nAString是一个使用 s 存储文本的容器str。它拥有它指向的数据,并且可以修改它或添加/删除它。
从文章中,astr是:
\n\n当我们引用其他人的 \xe2\x80\x9cowned\xe2\x80\x9d 的 UTF-8 文本范围时,或者当我们使用字符串文字创建它们时,我们会使用字符串切片(或 str)。 。
\n
所以str只能指向数据,也可以指向某些数据的子串。但它不拥有数据,也无法修改数据。
| 归档时间: |
|
| 查看次数: |
3241 次 |
| 最近记录: |