2 个版本
0.1.1 | 2019年4月13日 |
---|---|
0.1.0 | 2019年4月13日 |
#1591 在 异步
11KB
248 行
weighted-select
用法
use weighted_select::{self, IncompleteSelect};
let select = weighted_select::new()
.append(fetch_from_a, 5)
.append(fetch_from_b, 2)
.append(fetch_from_c, 3)
.build();
它产生一个流,该流结合了三个底层流(fetch_from_*
)并根据它们的权重(5
,2
,3
)轮询它们。每个流最多被轮询 weight
次连续。
lib.rs
:
一个合并多个流输出的适配器,具有优先级。
合并流将根据优先级从底层流中生成项目,并按优先级轮询流。
示例
use weighted_select::{self, IncompleteSelect};
let select = weighted_select::new()
.append(iter_ok::<_, ()>(vec![1u32, 1]), 1)
.append(iter_ok(vec![2, 2, 2, 2, 2]), 3)
.append(iter_ok(vec![3, 3, 3, 3]), 2)
.build();
let actual = select.wait().collect::<Result<Vec<_>, _>>().unwrap();
assert_eq!(actual, vec![1, 2, 2, 2, 3, 3, 1, 2, 2, 3, 3]);
依赖关系
~53KB