當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。