查看文档和代码,似乎str是一个基本类型,而Stringstruct { Vec<u8> }.str[u8]就像StringVec<u8>一样,str不能被定义为

struct str { slice: [u8]; }

与AsciiStr的定义类似?为什么(现在)还是定义为原始?

推荐答案

一旦出现了动态大小的类型,str就不再是原始类型了;正如您所指出的,它完全可以合理地成为一种 struct ,带有一个lang项,用于字符串文本.但似乎也没有什么特别好的理由改变它(尽管可能性被讨论了几次),因此现状依然存在.

Rust相关问答推荐

如何从接收&;self的方法克隆RC

MacOS(AARCH64)上Ghidra中的二进制补丁导致进程终止

这个规则关于或模式到底是什么意思?如果表达片段的类型与p_i|q_i...&q;不一致,就会形成

如何提高自定义迭代器的`extend`性能

支持TLS的模拟HTTP服务器

integer cast as pointer是什么意思

同时从不同线程调用DLL的不同函数会出现分段错误或产生STATUS_STACK_BUFFER_OVERRUN

如何使用盒装枚举进行模式匹配?

为什么';t std::cell::ref使用引用而不是非空?

如何在不调用Collect()的情况下为新型vec实现IntoIterator?

如何实现Serde::Ser::Error的调试

你能在Rust中弃用一个属性吗?

这个不安全的 Rust 代码有什么问题,所以它可以在 Windows 上运行,但不能在 Ubuntu 上运行?

可以在旋转循环中调用try_recv()吗?

Option<&T> 如何实现复制

如何从trait方法返回std :: iter :: Map?

为什么指定生命周期让我返回一个引用?

我如何将特征作为 struct 的拥有字段?

用逗号分隔字符串,但在标记中使用逗号

我可以在不调用 .clone() 的情况下在类型转换期间重用 struct 字段吗?