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


Rust slice.group_by用法及代碼示例


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

用法

pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F> where    F: FnMut(&T, &T) -> bool,

返回切片上的迭代器,使用謂詞將它們分開,產生不重疊的元素運行。

謂詞在其後的兩個元素上調用,這意味著謂詞在slice[0]slice[1]上調用,然後在slice[1]slice[2]上調用,依此類推。

例子

#![feature(slice_group_by)]

let slice = &[1, 1, 1, 3, 3, 2, 2, 2];

let mut iter = slice.group_by(|a, b| a == b);

assert_eq!(iter.next(), Some(&[1, 1, 1][..]));
assert_eq!(iter.next(), Some(&[3, 3][..]));
assert_eq!(iter.next(), Some(&[2, 2, 2][..]));
assert_eq!(iter.next(), None);

此方法可用於提取已排序的子切片:

#![feature(slice_group_by)]

let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4];

let mut iter = slice.group_by(|a, b| a <= b);

assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..]));
assert_eq!(iter.next(), Some(&[2, 3][..]));
assert_eq!(iter.next(), Some(&[2, 3, 4][..]));
assert_eq!(iter.next(), None);

相關用法


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