diff options
Diffstat (limited to 'src/types/to_sql.rs')
-rw-r--r-- | src/types/to_sql.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/types/to_sql.rs b/src/types/to_sql.rs index 1bf7711..2445339 100644 --- a/src/types/to_sql.rs +++ b/src/types/to_sql.rs @@ -16,13 +16,15 @@ pub enum ToSqlOutput<'a> { /// An owned SQLite-representable value. Owned(Value), - /// `feature = "blob"` A BLOB of the given length that is filled with + /// A BLOB of the given length that is filled with /// zeroes. #[cfg(feature = "blob")] + #[cfg_attr(docsrs, doc(cfg(feature = "blob")))] ZeroBlob(i32), /// `feature = "array"` #[cfg(feature = "array")] + #[cfg_attr(docsrs, doc(cfg(feature = "array")))] Array(Array), } @@ -70,9 +72,11 @@ from_value!(Vec<u8>); // `i128` needs in `Into<Value>`, but it's probably fine for the moment, and not // worth adding another case to Value. #[cfg(feature = "i128_blob")] +#[cfg_attr(docsrs, doc(cfg(feature = "i128_blob")))] from_value!(i128); #[cfg(feature = "uuid")] +#[cfg_attr(docsrs, doc(cfg(feature = "uuid")))] from_value!(uuid::Uuid); impl ToSql for ToSqlOutput<'_> { @@ -162,9 +166,11 @@ to_sql_self!(f32); to_sql_self!(f64); #[cfg(feature = "i128_blob")] +#[cfg_attr(docsrs, doc(cfg(feature = "i128_blob")))] to_sql_self!(i128); #[cfg(feature = "uuid")] +#[cfg_attr(docsrs, doc(cfg(feature = "uuid")))] to_sql_self!(uuid::Uuid); macro_rules! to_sql_self_fallible( @@ -218,6 +224,13 @@ impl ToSql for Vec<u8> { } } +impl<const N: usize> ToSql for [u8; N] { + #[inline] + fn to_sql(&self) -> Result<ToSqlOutput<'_>> { + Ok(ToSqlOutput::from(&self[..])) + } +} + impl ToSql for [u8] { #[inline] fn to_sql(&self) -> Result<ToSqlOutput<'_>> { @@ -260,6 +273,15 @@ mod test { } #[test] + fn test_u8_array() { + let a: [u8; 99] = [0u8; 99]; + let _a: &[&dyn ToSql] = crate::params![a]; + let r = ToSql::to_sql(&a); + + assert!(r.is_ok()); + } + + #[test] fn test_cow_str() { use std::borrow::Cow; let s = "str"; |