etk*_*220 2 arrays vector rust
我正在Rust中重新实现哈希表.最终我想让它分布式并具有法定数量,但是现在它是单个系统上的哈希表.
我希望将表的大小作为参数传入,因此表应该是动态调整大小的.我不希望表增长,因为这将使我的哈希函数混乱,该函数使用模运算.我看到了几个选择:
Vecs和数组的视图,所以我还需要一个Vec/数组?在C++中,我可以使用动态大小的数组.这里最好的选择是什么?
She*_*ter 10
甲盒装切片是动态调整大小,长度不能改变一旦创建,并且它拥有所包含的数据:
let the_vec: Vec<i32> = vec![1, 2, 3];
let the_boxed_slice: Box<[i32]> = the_vec.into_boxed_slice();
Run Code Online (Sandbox Code Playgroud)
这里不需要这些类型,它们只是出于教学原因而存在.
但是,你是否会获得任何性能优势是可疑的.A Vec是三个指针大小的值(数据,大小,容量).A Box<[T]>只有两个:数据和大小.在大多数情况下,具有额外值的开销是微不足道的.
主要好处是保证尺寸不会改变 ; 你不会静态地知道它是一定的尺寸.如果类型级别的数字发生,可能会发生这种保证.
也可以看看: