本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。