相关疑难解决方法(0)

为什么堆栈上的项目必须具有编译时已知的大小?

我明白为什么它们必须具有恒定的大小,但我不明白为什么必须在编译时知道该大小。即使 C 也允许在堆栈上使用可变长度数组。这个限制对 Rust 有什么帮助?

rust

8
推荐指数
1
解决办法
499
查看次数

为什么固定大小的数组可以在堆栈上,但str不能?

答案是什么锈病的`String`之间的区别`str`?描述了如何&strString相互关系.

令人惊讶的是,a str比固定大小的数组更有限,因为它不能被声明为局部变量.编译

let arr_owned = [0u8; 32];
let arr_slice = &arr_owned;

let str_slice = "apple";
let str_owned = *str_slice;
Run Code Online (Sandbox Code Playgroud)

在Rust 1.32.0中,我明白了

error[E0277]: the size for values of type `str` cannot be known at compilation time
 --> src/lib.rs:6:9
Run Code Online (Sandbox Code Playgroud)

这是令人困惑的,因为"apple"编译器可以知道它的大小,它只是不属于str类型的一部分.

是否存在Vec<T>< - > [T; N]String< - > str所拥有类型之间不对称的语言原因?一个str[N]类型,它是一个简短的[u8; N]只包含可证明有效的UTF-8编码字符串,可以替换str而不会破坏大量现有代码吗?

language-lawyer rust

7
推荐指数
2
解决办法
216
查看次数

标签 统计

rust ×2

language-lawyer ×1