#stream #weight #priority #select #output-stream

weighted-select

带有权重的 futures::stream::Select

2 个版本

0.1.1 2019年4月13日
0.1.0 2019年4月13日

#1591异步

MIT 许可证

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_*)并根据它们的权重(523)轮询它们。每个流最多被轮询 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