本文简要介绍rust语言中 std::vec::Vec.split_at_spare_mut
的用法。
用法
pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])
将向量内容作为 T
的切片返回,并将向量的剩余备用容量作为 MaybeUninit<T>
的切片返回。
返回的备用容量切片可用于在使用 set_len
方法将数据标记为已初始化之前用数据填充向量(例如,通过从文件中读取)。
请注意,这是一个低级 API,出于优化目的应谨慎使用。如果您需要将数据附加到 Vec
,您可以使用 push
, extend
, extend_from_slice
, extend_from_within
, insert
, append
, resize
或 resize_with
,具体取决于您的具体需求。
例子
#![feature(vec_split_at_spare, maybe_uninit_extra)]
let mut v = vec![1, 1, 2];
// Reserve additional space big enough for 10 elements.
v.reserve(10);
let (init, uninit) = v.split_at_spare_mut();
let sum = init.iter().copied().sum::<u32>();
// Fill in the next 4 elements.
uninit[0].write(sum);
uninit[1].write(sum * 2);
uninit[2].write(sum * 3);
uninit[3].write(sum * 4);
// Mark the 4 elements of the vector as being initialized.
unsafe {
let len = v.len();
v.set_len(len + 4);
}
assert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
相关用法
- Rust Vec.split_off用法及代码示例
- Rust Vec.splice用法及代码示例
- Rust Vec.spare_capacity_mut用法及代码示例
- Rust Vec.swap_remove用法及代码示例
- Rust Vec.shrink_to_fit用法及代码示例
- Rust Vec.set_len用法及代码示例
- Rust Vec.shrink_to用法及代码示例
- Rust Vec.drain用法及代码示例
- Rust Vec.into_raw_parts用法及代码示例
- Rust Vec.resize用法及代码示例
- Rust Vec.is_empty用法及代码示例
- Rust Vec.reserve_exact用法及代码示例
- Rust Vec.retain_mut用法及代码示例
- Rust Vec.try_reserve_exact用法及代码示例
- Rust Vec.new_in用法及代码示例
- Rust Vec.insert用法及代码示例
- Rust Vec.retain用法及代码示例
- Rust Vec.with_capacity用法及代码示例
- Rust Vec.from_raw_parts用法及代码示例
- Rust Vec.into_boxed_slice用法及代码示例
- Rust Vec.reserve用法及代码示例
- Rust Vec.dedup_by用法及代码示例
- Rust Vec.as_mut_slice用法及代码示例
- Rust Vec.dedup用法及代码示例
- Rust Vec.as_ptr用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::vec::Vec.split_at_spare_mut。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。