rust/tests/rustdoc-js/assoc-type-loop.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

37 lines
976 B
Rust
Raw Normal View History

2024-06-03 02:35:56 -05:00
#![crate_name = "foo"]
// reduced from sqlx 0.7.3
use std::future::Future;
use std::ops::{Deref, DerefMut};
2024-06-03 02:35:56 -05:00
use std::pin::Pin;
pub enum Error {}
pub trait Acquire<'c> {
type Database: Database;
type Connection: Deref<Target = <Self::Database as Database>::Connection> + DerefMut + Send;
}
pub trait Database {
type Connection: Connection<Database = Self>;
}
pub trait Connection {
type Database: Database;
type Options: ConnectionOptions<Connection = Self>;
fn begin(
2024-06-03 02:35:56 -05:00
&mut self,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, Self::Database>, Error>> + Send + '_>>
where
Self: Sized;
}
pub trait ConnectionOptions {
type Connection: Connection;
}
pub struct Transaction<'c, DB: Database> {
_db: &'c DB,
}
impl<'t, 'c, DB: Database> Acquire<'t> for &'t mut Transaction<'c, DB>
2024-06-03 02:35:56 -05:00
where
<DB as Database>::Connection: Send,
{
type Database = DB;
type Connection = &'t mut <DB as Database>::Connection;
}