diff options
Diffstat (limited to 'tests/rustdoc-js/assoc-type-loop.rs')
-rw-r--r-- | tests/rustdoc-js/assoc-type-loop.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/rustdoc-js/assoc-type-loop.rs b/tests/rustdoc-js/assoc-type-loop.rs new file mode 100644 index 000000000..f123c83f5 --- /dev/null +++ b/tests/rustdoc-js/assoc-type-loop.rs @@ -0,0 +1,35 @@ +#![crate_name="foo"] + +// reduced from sqlx 0.7.3 +use std::future::Future; +use std::pin::Pin; +use std::ops::{Deref, DerefMut}; +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( + &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> + where <DB as Database>::Connection: Send +{ + type Database = DB; + type Connection = &'t mut <DB as Database>::Connection; +} |