#sink #output #routes #input #input-output #splitter #key

sink-splitter

一个输入 Sink,将每个项目路由到多个输出 Sink 之一

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年12月1日

#7 in #splitter

MIT/Apache

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