From 974571174d5c00b7b7529504d5da65f7174b5cf5 Mon Sep 17 00:00:00 2001 From: Tomasz Pietrek Date: Fri, 13 Jan 2023 10:02:24 +0100 Subject: [PATCH 1/3] Add Vec impl for ToServerAddrs Signed-off-by: Tomasz Pietrek --- async-nats/src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/async-nats/src/lib.rs b/async-nats/src/lib.rs index 2ea1f865e..1d20b5979 100644 --- a/async-nats/src/lib.rs +++ b/async-nats/src/lib.rs @@ -1165,6 +1165,14 @@ impl<'a> ToServerAddrs for &'a [ServerAddr] { } } +impl ToServerAddrs for Vec { + type Iter = std::vec::IntoIter; + + fn to_server_addrs(&self) -> io::Result { + Ok(self.clone().into_iter()) + } +} + impl ToServerAddrs for &T { type Iter = T::Iter; fn to_server_addrs(&self) -> io::Result { From e13c069f5656b5e07c3b01aebc85371139922df2 Mon Sep 17 00:00:00 2001 From: Tomasz Pietrek Date: Fri, 13 Jan 2023 10:22:29 +0100 Subject: [PATCH 2/3] Add examples for connect with multiple urls Signed-off-by: Tomasz Pietrek --- async-nats/src/lib.rs | 52 +++++++++++++++++++++++++++++++++++++++ async-nats/src/options.rs | 15 +++++++++++ 2 files changed, 67 insertions(+) diff --git a/async-nats/src/lib.rs b/async-nats/src/lib.rs index 1d20b5979..12a2c5864 100644 --- a/async-nats/src/lib.rs +++ b/async-nats/src/lib.rs @@ -760,6 +760,8 @@ impl fmt::Display for Event { /// To have customized NATS connection, check [ConnectOptions]. /// /// # Examples +/// +/// ## Single URL /// ``` /// # #[tokio::main] /// # async fn main() -> Result<(), async_nats::Error> { @@ -768,6 +770,56 @@ impl fmt::Display for Event { /// # Ok(()) /// # } /// ``` +/// +/// ## Connect with [Vec] of [ServerAddr]. +/// ```no_run +///#[tokio::main] +///# async fn main() -> Result<(), async_nats::Error> { +///use async_nats::ServerAddr; +///let client = async_nats::connect(vec![ +/// "demo.nats.io".parse::()?, +/// "other.nats.io".parse::()?, +///]) +///.await +///.unwrap(); +///# Ok(()) +///# } +/// ``` +/// +/// ## with [Vec], but parse URLs inside [crate::connect()] +/// ```no_run +///#[tokio::main] +///# async fn main() -> Result<(), async_nats::Error> { +///use async_nats::ServerAddr; +///let servers = vec!["demo.nats.io", "other.nats.io"]; +///let client = async_nats::connect( +/// servers +/// .iter() +/// .map(|url| url.parse()) +/// .collect::, _>>()? +///) +///.await?; +///# Ok(()) +///# } +///``` +/// +/// +/// ## with slice. +/// ```no_run +///#[tokio::main] +///# async fn main() -> Result<(), async_nats::Error> { +///use async_nats::ServerAddr; +///let client = async_nats::connect( +/// [ +/// "demo.nats.io".parse::()?, +/// "other.nats.io".parse::()?, +/// ] +/// .as_slice(), +///) +///.await?; +///# Ok(()) +///# } +/// pub async fn connect(addrs: A) -> Result { connect_with_options(addrs, ConnectOptions::default()).await } diff --git a/async-nats/src/options.rs b/async-nats/src/options.rs index e358d4650..b152035b0 100644 --- a/async-nats/src/options.rs +++ b/async-nats/src/options.rs @@ -138,6 +138,21 @@ impl ConnectOptions { /// # Ok(()) /// # } /// ``` + /// + /// ## Pass multiple URLs. + /// ```no_run + ///#[tokio::main] + ///# async fn main() -> Result<(), async_nats::Error> { + ///use async_nats::ServerAddr; + ///let client = async_nats::connect(vec![ + /// "demo.nats.io".parse::()?, + /// "other.nats.io".parse::()?, + ///]) + ///.await + ///.unwrap(); + ///# Ok(()) + ///# } + /// ``` pub async fn connect(self, addrs: A) -> io::Result { crate::connect_with_options(addrs, self).await } From 3997ce39148d35eb6ede6e8c22a5c4e468179841 Mon Sep 17 00:00:00 2001 From: Tomasz Pietrek Date: Fri, 13 Jan 2023 10:45:13 +0100 Subject: [PATCH 3/3] Update spellecheck dictionary Signed-off-by: Tomasz Pietrek --- .config/nats.dic | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/nats.dic b/.config/nats.dic index e754b941f..2d2e66ad6 100644 --- a/.config/nats.dic +++ b/.config/nats.dic @@ -119,3 +119,5 @@ cloneable PurgeRequest StatsResponse SemVer +ServerAddr +Vec