From 6b2645ed4a6a2717e174f5cd39c13fedee837947 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sat, 6 Mar 2021 08:10:00 +0100 Subject: Add Containers::get_checked() for getting an existing container Containers::get() does always return a handle to a container, which might be invalid. This function checks whether the container exists before returning either a Some(Container) or None. Signed-off-by: Matthias Beyer --- src/lib.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index a9d9264..83c53b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -645,6 +645,25 @@ impl<'docker> Containers<'docker> { Container::new(self.docker, name) } + /// Same as `Container::get()`, but checks whether the container exists and returns None if it + /// doesn't + pub async fn get_checked( + &self, + name: S, + ) -> Result>> + where + S: AsRef, + { + let listopts = ContainerListOptions::builder().all().build(); + self.list(&listopts) + .await? + .into_iter() + .find(|rep| rep.id == name.as_ref()) + .map(|rep| Container::new(self.docker, rep.id)) + .map(Ok) + .transpose() + } + /// Returns a builder interface for creating a new container instance pub async fn create( &self, -- cgit v1.2.3