seal BorrowToSql
This commit is contained in:
parent
0e494a08a9
commit
42dcfb584a
@ -108,6 +108,7 @@
|
|||||||
#![doc(html_root_url = "https://docs.rs/postgres-types/0.1")]
|
#![doc(html_root_url = "https://docs.rs/postgres-types/0.1")]
|
||||||
#![warn(clippy::all, rust_2018_idioms, missing_docs)]
|
#![warn(clippy::all, rust_2018_idioms, missing_docs)]
|
||||||
|
|
||||||
|
use crate::sealed::Sealed;
|
||||||
use fallible_iterator::FallibleIterator;
|
use fallible_iterator::FallibleIterator;
|
||||||
use postgres_protocol::types::{self, ArrayDimension};
|
use postgres_protocol::types::{self, ArrayDimension};
|
||||||
use std::any::type_name;
|
use std::any::type_name;
|
||||||
@ -952,18 +953,29 @@ fn downcast(len: usize) -> Result<i32, Box<dyn Error + Sync + Send>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A helper trait to be able create a parameters iterator from `&dyn ToSql` or `T: ToSql`
|
mod sealed {
|
||||||
pub trait BorrowToSql {
|
pub trait Sealed {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A helper trait used internally by Rust-Postgres
|
||||||
|
/// to be able create a parameters iterator from `&dyn ToSql` or `T: ToSql`.
|
||||||
|
///
|
||||||
|
/// /// This cannot be implemented outside of this crate.
|
||||||
|
pub trait BorrowToSql: sealed::Sealed {
|
||||||
/// Get a reference to a `ToSql` trait object
|
/// Get a reference to a `ToSql` trait object
|
||||||
fn borrow_to_sql(&self) -> &dyn ToSql;
|
fn borrow_to_sql(&self) -> &dyn ToSql;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Sealed for &dyn ToSql {}
|
||||||
|
|
||||||
impl BorrowToSql for &dyn ToSql {
|
impl BorrowToSql for &dyn ToSql {
|
||||||
fn borrow_to_sql(&self) -> &dyn ToSql {
|
fn borrow_to_sql(&self) -> &dyn ToSql {
|
||||||
*self
|
*self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T: ToSql> Sealed for T {}
|
||||||
|
|
||||||
impl<T: ToSql> BorrowToSql for T {
|
impl<T: ToSql> BorrowToSql for T {
|
||||||
fn borrow_to_sql(&self) -> &dyn ToSql {
|
fn borrow_to_sql(&self) -> &dyn ToSql {
|
||||||
self
|
self
|
||||||
|
Loading…
Reference in New Issue
Block a user