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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。