Bot*_*Fab -2 vector heap-memory rust stack-allocation
我目前正在处理向量,并试图确保我在堆栈上拥有本质上是向量数组的内容。我无法调用,Vec::into_boxed_slice
因为我正在动态分配Vec
. 这是可能吗?
阅读了关于如何实现的Vec
Rustonomicon 后,它似乎跨越了堆上的指针,在每个条目处取消引用。我想将Vec
堆中的条目分块到堆栈中以便快速访问。
unsized_locals
您可以在夜间 Rust 中使用该功能:
#![feature(unsized_locals)]
fn example<T>(v: Vec<T>) {
let s: [T] = *v.into_boxed_slice();
dbg!(std::mem::size_of_val(&s));
}
fn main() {
let x = vec![42; 100];
example(x); // Prints 400
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
我无法调用,
Vec::into_boxed_slice
因为我正在动态分配空间Vec
你当然可以。
Vec
[...] 似乎跨越了堆上的指针,在每个条目处取消引用
访问 a 中的每个成员都Vec
需要内存取消引用。访问数组中的每个成员都需要内存取消引用。这里的速度没有实质性差异。
用于快速访问
我怀疑这会比直接访问Vec
. 事实上,如果它变慢我不会感到惊讶,因为你正在复制它。
归档时间: |
|
查看次数: |
222 次 |
最近记录: |