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


Rust MaybeUninit.write_slice_cloned用法及代码示例


本文简要介绍rust语言中 std::mem::MaybeUninit.write_slice_cloned 的用法。

用法

pub fn write_slice_cloned(    this: &'a mut [MaybeUninit<T>],     src: &[T]) -> &'a mut [T] where    T: Clone,

将元素从 src 克隆到 this ,返回对现在已初始化的 this 内容的可变引用。任何已经初始化的元素都不会被删除。

如果 T 实现 Copy ,请使用 write_slice

这类似于 slice::clone_from_slice ,但不会删除现有元素。

Panics

如果两个切片的长度不同,或者 Clone 的实现出现Panics,此函数将出现Panics。

如果出现Panics,已经克隆的元素将被删除。

例子

#![feature(maybe_uninit_write_slice)]
use std::mem::MaybeUninit;

let mut dst = [MaybeUninit::uninit(), MaybeUninit::uninit(), MaybeUninit::uninit(), MaybeUninit::uninit(), MaybeUninit::uninit()];
let src = ["wibbly".to_string(), "wobbly".to_string(), "timey".to_string(), "wimey".to_string(), "stuff".to_string()];

let init = MaybeUninit::write_slice_cloned(&mut dst, &src);

assert_eq!(init, src);
#![feature(maybe_uninit_write_slice, vec_spare_capacity)]
use std::mem::MaybeUninit;

let mut vec = Vec::with_capacity(32);
let src = ["rust", "is", "a", "pretty", "cool", "language"];

MaybeUninit::write_slice_cloned(&mut vec.spare_capacity_mut()[..src.len()], &src);

// SAFETY: we have just cloned all the elements of len into the spare capacity
// the first src.len() elements of the vec are valid now.
unsafe {
    vec.set_len(src.len());
}

assert_eq!(vec, src);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::mem::MaybeUninit.write_slice_cloned。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。