4 个版本 (2 个破坏性更新)
使用旧的 Rust 2015
0.3.0 | 2018年3月11日 |
---|---|
0.2.0 | 2018年3月9日 |
0.1.1 | 2018年3月7日 |
0.1.0 | 2018年3月7日 |
#2371 in 算法
19KB
358 行
此crate旨在为切片提供各种工具。
由于语言中缺乏泛型关联类型,此crate使用自己的流式迭代器:因此,您不能使用这些迭代器与 for
控制流一起使用。使用 while let
控制流,或如以下示例所示使用宏辅助工具。
示例
Cargo.toml:
[dependencies]
slicetools = "0.2.*"
main.rs:
extern crate slicetools;
use slicetools::*;
let mut v = vec![1, 2, 3, 4];
{
let mut it = v.pairs_mut();
while let Some((a, b)) = it.next() {
if *b > *a {
*a += 1;
}
}
}
assert_eq!(v, &[4, 4, 4, 4]);
或者,使用辅助宏
#[macro_use] extern crate slicetools;
use slicetools::*;
let mut v = vec![1, 2, 3, 4];
stream!( v.pairs_mut() => (a, b) in {
if *b > *a {
*a += 1;
}
});
assert_eq!(v, &[4, 4, 4, 4]);
变更日志
0.3.*
- 添加了3个新的扩展来获取项目组。
0.2.*
-
使用自己的流式迭代器而不是常规迭代器,后者是不安全的(允许在同一个项目上多次可变借用)。
-
添加了一个新的流式传输器,用于在两个切片之间进行笛卡尔积。