1 #![feature(generic_associated_types)]
4 use std::marker::PhantomData;
7 pub struct TransactionImpl<'db> {
8 _marker: PhantomData<&'db ()>,
12 pub struct CursorImpl<'txn> {
13 _marker: PhantomData<&'txn ()>,
16 pub trait Cursor<'txn> {}
18 pub trait Transaction<'db>: Send + Sync + Debug + Sized {
19 type Cursor<'tx>: Cursor<'tx>
24 fn cursor<'tx>(&'tx self) -> Result<Self::Cursor<'tx>, ()>
29 impl<'tx> Cursor<'tx> for CursorImpl<'tx> {}
31 impl<'db> Transaction<'db> for TransactionImpl<'db> {
32 type Cursor<'tx> = CursorImpl<'tx>; //~ ERROR lifetime bound not satisfied
34 fn cursor<'tx>(&'tx self) -> Result<Self::Cursor<'tx>, ()>