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


Rust slice.swap_with_slice用法及代码示例


本文简要介绍rust语言中 slice.swap_with_slice 的用法。

用法

pub fn swap_with_slice(&mut self, other: &mut [T])

self 中的所有元素与 other 中的元素交换。

other 的长度必须与 self 相同。

Panics

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

示例

跨切片交换两个元素:

let mut slice1 = [0, 0];
let mut slice2 = [1, 2, 3, 4];

slice1.swap_with_slice(&mut slice2[2..]);

assert_eq!(slice1, [3, 4]);
assert_eq!(slice2, [1, 2, 0, 0]);

Rust 强制在特定范围内只能有一个对特定数据的可变引用。因此,尝试在单个切片上使用 swap_with_slice 将导致编译失败:

let mut slice = [1, 2, 3, 4, 5];
slice[..2].swap_with_slice(&mut slice[3..]); // compile fail!

为了解决这个问题,我们可以使用 split_at_mut 从切片中创建两个不同的可变 sub-slices:

let mut slice = [1, 2, 3, 4, 5];

{
    let (left, right) = slice.split_at_mut(2);
    left.swap_with_slice(&mut right[1..]);
}

assert_eq!(slice, [4, 5, 3, 1, 2]);

相关用法


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