aesteve / vertx-eventbus-client-rs

Rust client for Vert.x TCP event-bus bridge
Apache License 2.0
10 stars 2 forks source link

Investigate other designs #3

Open aesteve opened 4 years ago

aesteve commented 4 years ago

At the moment, the user can subscribe to incoming messages by passing a MessageHandler, a default implementation for static Functions is provided, and the user can implement the trait if (s)he needs to.

It could be a good idea to grasp inspirations from other crates to know how such a pattern is handled. Giving the user an infinite iterator over messages looks (naively) like a possibility, but how do such "infinite, blocking iterators" work?

References:

  1. Streaming iterator May be an interesting approach:
    while let Some(message) = eb.consumer("some-address") {
    // this is an infinite loop, though :(
    }
  2. "Go full async" https://github.com/rust-lang/rfcs/blob/master/text/2033-experimental-coroutines.md
aesteve commented 4 years ago

Using mpsc and iterators for now.

Async could be really interesting too, especially since Vert.x being async by nature, crate users would not be confused by an async implementation.