From 76336369ed2ebb6086048f05de1775ff0e7d47c3 Mon Sep 17 00:00:00 2001 From: Thom Chiovoloni Date: Mon, 6 Apr 2020 17:00:15 -0700 Subject: [PATCH] Fix regression with as ToSql> (#681) --- src/types/to_sql.rs | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/types/to_sql.rs b/src/types/to_sql.rs index 597d7c6..bec53f8 100644 --- a/src/types/to_sql.rs +++ b/src/types/to_sql.rs @@ -90,7 +90,7 @@ pub trait ToSql { fn to_sql(&self) -> Result>; } -impl ToSql for Cow<'_, T> { +impl ToSql for Cow<'_, T> { fn to_sql(&self) -> Result> { self.as_ref().to_sql() } @@ -223,17 +223,20 @@ mod test { fn test_cow_str() { use std::borrow::Cow; let s = "str"; - let cow = Cow::Borrowed(s); + let cow: Cow = Cow::Borrowed(s); let r = cow.to_sql(); assert!(r.is_ok()); - let cow = Cow::Owned::(String::from(s)); + let cow: Cow = Cow::Owned::(String::from(s)); let r = cow.to_sql(); assert!(r.is_ok()); + // Ensure this compiles. + let _p: &[&dyn ToSql] = crate::params![cow]; } #[test] fn test_box_dyn() { let s: Box = Box::new("Hello world!"); + let _s: &[&dyn ToSql] = crate::params![s]; let r = ToSql::to_sql(&s); assert!(r.is_ok()); @@ -242,6 +245,7 @@ mod test { #[test] fn test_box_deref() { let s: Box = "Hello world!".into(); + let _s: &[&dyn ToSql] = crate::params![s]; let r = s.to_sql(); assert!(r.is_ok()); @@ -250,6 +254,7 @@ mod test { #[test] fn test_box_direct() { let s: Box = "Hello world!".into(); + let _s: &[&dyn ToSql] = crate::params![s]; let r = ToSql::to_sql(&s); assert!(r.is_ok()); @@ -261,11 +266,33 @@ mod test { let source_str: Box = "Hello world!".into(); - let s: Rc<_> = Rc::new(source_str.clone()); + let s: Rc> = Rc::new(source_str.clone()); + let _s: &[&dyn ToSql] = crate::params![s]; let r = s.to_sql(); assert!(r.is_ok()); - let s: Arc<_> = Arc::new(source_str); + let s: Arc> = Arc::new(source_str.clone()); + let _s: &[&dyn ToSql] = crate::params![s]; + let r = s.to_sql(); + assert!(r.is_ok()); + + let s: Arc = Arc::from(&*source_str); + let _s: &[&dyn ToSql] = crate::params![s]; + let r = s.to_sql(); + assert!(r.is_ok()); + + let s: Arc = Arc::new(source_str.clone()); + let _s: &[&dyn ToSql] = crate::params![s]; + let r = s.to_sql(); + assert!(r.is_ok()); + + let s: Rc = Rc::from(&*source_str); + let _s: &[&dyn ToSql] = crate::params![s]; + let r = s.to_sql(); + assert!(r.is_ok()); + + let s: Rc = Rc::new(source_str); + let _s: &[&dyn ToSql] = crate::params![s]; let r = s.to_sql(); assert!(r.is_ok()); }