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


Rust VecDeque.make_contiguous用法及代码示例


本文简要介绍rust语言中 alloc::collections::vec_deque::VecDeque.make_contiguous 的用法。

用法

pub fn make_contiguous(&mut self) -> &mut [T]

重新排列此双端队列的内部存储,使其成为一个连续的切片,然后返回。

此方法不分配也不改变插入元素的顺序。由于它返回一个可变切片,因此可用于对双端队列进行排序。

一旦内部存储连续, as_slices as_mut_slices 方法将在单个切片中返回VecDeque 的全部内容。

例子

对双端队列的内容进行排序。

use std::collections::VecDeque;

let mut buf = VecDeque::with_capacity(15);

buf.push_back(2);
buf.push_back(1);
buf.push_front(3);

// sorting the deque
buf.make_contiguous().sort();
assert_eq!(buf.as_slices(), (&[1, 2, 3] as &[_], &[] as &[_]));

// sorting it in reverse order
buf.make_contiguous().sort_by(|a, b| b.cmp(a));
assert_eq!(buf.as_slices(), (&[3, 2, 1] as &[_], &[] as &[_]));

获得对连续切片的不可变访问。

use std::collections::VecDeque;

let mut buf = VecDeque::new();

buf.push_back(2);
buf.push_back(1);
buf.push_front(3);

buf.make_contiguous();
if let (slice, &[]) = buf.as_slices() {
    // we can now be sure that `slice` contains all elements of the deque,
    // while still having immutable access to `buf`.
    assert_eq!(buf.len(), slice.len());
    assert_eq!(slice, &[3, 2, 1] as &[_]);
}

相关用法


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