当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。