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


Rust slice.partition_dedup_by用法及代碼示例

本文簡要介紹rust語言中 slice.partition_dedup_by 的用法。

用法

pub fn partition_dedup_by<F>(&mut self, same_bucket: F) -> (&mut [T], &mut [T]) where    F: FnMut(&mut T, &mut T) -> bool,

將除了第一個連續元素之外的所有元素移動到滿足給定相等關係的切片末尾。

返回兩個切片。第一個不包含連續重複的元素。第二個包含沒有指定順序的所有重複項。

same_bucket 函數傳遞對切片中兩個元素的引用,並且必須確定元素比較是否相等。元素的傳遞順序與它們在切片中的順序相反,因此如果 same_bucket(a, b) 返回 true ,則 a 將移動到切片的末尾。

如果切片已排序,則返回的第一個切片不包含重複項。

例子

#![feature(slice_partition_dedup)]

let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];

let (dedup, duplicates) = slice.partition_dedup_by(|a, b| a.eq_ignore_ascii_case(b));

assert_eq!(dedup, ["foo", "BAZ", "Bar", "baz"]);
assert_eq!(duplicates, ["bar", "Foo", "BAZ"]);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 slice.partition_dedup_by。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。