Generic Associated Types in Database, replacing HasValueRef, HasArguments, HasStatement (#2973)

* HasValueRef, HasArguments, HasStatement -> Database GATs

replace the associated types from the generic traits
`HasValueRef<'r>`, `HasArguments<'q>` and `HasStatement<'q>`
with generic associated types in `Database`

* fixup after rebase

---------

Co-authored-by: Austin Bonander <austin.bonander@gmail.com>
This commit is contained in:
nitn3lav
2024-03-14 20:35:52 +01:00
committed by GitHub
parent 936744dfd6
commit 9ba488c831
33 changed files with 173 additions and 284 deletions

View File

@@ -1,6 +1,4 @@
pub(crate) use sqlx_core::database::{
Database, HasArguments, HasStatement, HasStatementCache, HasValueRef,
};
pub(crate) use sqlx_core::database::{Database, HasStatementCache};
use crate::{
SqliteArgumentValue, SqliteArguments, SqliteColumn, SqliteConnection, SqliteQueryResult,
@@ -26,30 +24,16 @@ impl Database for Sqlite {
type TypeInfo = SqliteTypeInfo;
type Value = SqliteValue;
type ValueRef<'r> = SqliteValueRef<'r>;
type Arguments<'q> = SqliteArguments<'q>;
type ArgumentBuffer<'q> = Vec<SqliteArgumentValue<'q>>;
type Statement<'q> = SqliteStatement<'q>;
const NAME: &'static str = "SQLite";
const URL_SCHEMES: &'static [&'static str] = &["sqlite"];
}
impl<'r> HasValueRef<'r> for Sqlite {
type Database = Sqlite;
type ValueRef = SqliteValueRef<'r>;
}
impl<'q> HasArguments<'q> for Sqlite {
type Database = Sqlite;
type Arguments = SqliteArguments<'q>;
type ArgumentBuffer = Vec<SqliteArgumentValue<'q>>;
}
impl<'q> HasStatement<'q> for Sqlite {
type Database = Sqlite;
type Statement = SqliteStatement<'q>;
}
impl HasStatementCache for Sqlite {}