當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Vec.split_at_spare_mut用法及代碼示例


本文簡要介紹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-lang.org大神的英文原創作品 std::vec::Vec.split_at_spare_mut。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。