1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
#![feature(async_closure)] //! [](https://crates.io/crates/tokio-nats) //! [](https://docs.rs/tokio-nats) //! A client for NATS using `tokio` and async-await. //! //! There are still features missing, but it should be ready for use in simple situations. //! //! ## Installation //! //! ```toml //! [dependencies] //! tokio-nats = "0.1.0" //! ``` //! ## Usage //! ```rust //! #![feature(async_closure)] //! //! use tokio_nats::{NatsConfigBuilder, connect}; //! use futures_util::StreamExt; //! //! async fn demo() { //! let config = NatsConfigBuilder::default() //! .server("127.0.0.1:4222") //! .build() //! .unwrap(); //! let mut client = connect(config).await.unwrap(); //! //! client.publish("MySubject", "hello world".as_bytes()).await.unwrap(); //! //! client.subscribe("MyOtherSubject").await.unwrap().for_each(async move |message| { //! println!("Received message {:?}", message); //! }).await; //! } //! ``` #[macro_use] extern crate serde; #[macro_use] extern crate derive_builder; mod connection; mod errors; mod protocol; mod subscriptions; use bytes::Bytes; pub use connection::{connect, NatsClient, NatsConfig, NatsConfigBuilder}; pub use errors::Error; pub use subscriptions::NatsSubscription; /// A message that has been received by the NATS client. #[derive(Debug, Clone)] pub struct NatsMessage { pub subject: String, pub payload: Bytes, }