diff --git a/bb8/src/api.rs b/bb8/src/api.rs
index 4db833c..548fd04 100644
--- a/bb8/src/api.rs
+++ b/bb8/src/api.rs
@@ -165,8 +165,8 @@ impl<M: ManageConnection> Builder<M> {
     ///
     /// Defaults to None.
     #[must_use]
-    pub fn min_idle(mut self, min_idle: Option<u32>) -> Self {
-        self.min_idle = min_idle;
+    pub fn min_idle(mut self, min_idle: impl Into<Option<u32>>) -> Self {
+        self.min_idle = min_idle.into();
         self
     }
 
@@ -194,7 +194,8 @@ impl<M: ManageConnection> Builder<M> {
     ///
     /// Will panic if `max_lifetime` is 0.
     #[must_use]
-    pub fn max_lifetime(mut self, max_lifetime: Option<Duration>) -> Self {
+    pub fn max_lifetime(mut self, max_lifetime: impl Into<Option<Duration>>) -> Self {
+        let max_lifetime = max_lifetime.into();
         assert_ne!(
             max_lifetime,
             Some(Duration::from_secs(0)),
@@ -215,7 +216,8 @@ impl<M: ManageConnection> Builder<M> {
     ///
     /// Will panic if `idle_timeout` is 0.
     #[must_use]
-    pub fn idle_timeout(mut self, idle_timeout: Option<Duration>) -> Self {
+    pub fn idle_timeout(mut self, idle_timeout: impl Into<Option<Duration>>) -> Self {
+        let idle_timeout = idle_timeout.into();
         assert_ne!(
             idle_timeout,
             Some(Duration::from_secs(0)),