1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2017年12月1日 |
---|
#7 in #splitter
12KB
212 行
sink-splitter
一个输入 Sink,将每个项目路由到多个输出 Sink 之一。
在开始发送项目之前,请插入您的输出 Sink。
项目按顺序交付。如果对应当前键的输出 Sink 发生阻塞,则 Splitter
也会阻塞。
extern crate futures;
extern crate sink_splitter;
use futures::{Future, Sink, Stream};
use futures::stream::iter_ok;
fn main() {
let source = iter_ok::<_, sink_splitter::Error<_, _, _>>(
vec![("left", 1), ("right", 2), ("right", 3), ("left", 4)],
);
let destination_left = Vec::new();
let destination_right = Vec::new();
let (splitter, mut controller) = sink_splitter::new();
controller.insert_sink("left", destination_left).unwrap();
controller.insert_sink("right", destination_right).unwrap();
let (_, splitter) = source.forward(splitter).wait().unwrap();
let sinks = splitter.into_sinks();
assert_eq!(sinks.get("left").unwrap(), &vec![1, 4]);
assert_eq!(sinks.get("right").unwrap(), &vec![2, 3]);
}
许可证:MIT/Apache-2.0
依赖项
~53KB