ruchei-route 0.1.9

Sinks with routes
Documentation

[Sink]s with routing inspired by ZeroMQ's ROUTER sockets.

This model sits somewhere between explicit connection management and ZMQ-like routing trying to be a reasonable abstraction around both, with some trade-offs.

[Sink]s

  • [RouteSink::poll_ready_any]
  • [RouteSink::start_send]
  • [RouteSink::poll_flush_all]
  • [RouteSink::poll_close]

Proper [RouteSink]s

  • [RouteSink::poll_ready]
  • [RouteSink::start_send]
  • [RouteSink::poll_flush]
  • [RouteSink::poll_close]

[RouteSink] as a trait union

  • [RouteSink::is_routing]

Dynamicity

Object safety

[RouteSink] method is object safe.

However, we don't provide any methods to upcast to [Sink], since we believe plain [Sink] and [RouteSink] traits don't represent our target usecases, specifically networking, which involve Streams as a necessary component of the object. Since this crate doesn't depend on futures-core, we don't provide dyn Stream + ... either. Another consideration is to provide mechanisms for creating upcasting instead of providing upcasting itself, to, for example, allow for a more efficient FFI functionality.

FFI

Coming Soon...