本文简要介绍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 slice.swap_unchecked用法及代码示例
- Rust slice.swap用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust slice.sort_unstable_by用法及代码示例
- Rust slice.sort用法及代码示例
- Rust slice.split_array_mut用法及代码示例
- Rust slice.splitn_mut用法及代码示例
- Rust slice.split_first用法及代码示例
- Rust slice.splitn用法及代码示例
- Rust slice.split_array_ref用法及代码示例
- Rust slice.sort_by用法及代码示例
- Rust slice.split用法及代码示例
- Rust slice.split_inclusive用法及代码示例
- Rust slice.split_mut用法及代码示例
- Rust slice.strip_suffix用法及代码示例
- Rust slice.split_last_mut用法及代码示例
- Rust slice.split_first_mut用法及代码示例
- Rust slice.select_nth_unstable用法及代码示例
- Rust slice.sort_unstable用法及代码示例
- Rust slice.split_at_mut用法及代码示例
- Rust slice.select_nth_unstable_by用法及代码示例
- Rust slice.split_at_unchecked用法及代码示例
- Rust slice.split_at用法及代码示例
- Rust slice.split_at_mut_unchecked用法及代码示例
- Rust slice.strip_prefix用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 slice.swap_with_slice。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。