use crate::{
Ro, RoSync, Rw, RwSync,
tx::{
PtrSync, PtrUnsync,
cursor::Cursor,
r#impl::Tx,
iter::{Iter, IterDup, IterDupFixed, IterDupFixedOfKey, IterDupOfKey},
},
};
use std::{borrow::Cow, sync::Arc};
pub type TxSync<K> = Tx<K, Arc<PtrSync>>;
pub type TxUnsync<K> = Tx<K, PtrUnsync>;
pub type RoTxSync = TxSync<RoSync>;
pub type RwTxSync = TxSync<RwSync>;
pub type RoTxUnsync = TxUnsync<Ro>;
pub type RwTxUnsync = TxUnsync<Rw>;
unsafe impl Send for RoTxSync {}
unsafe impl Send for RwTxSync {}
unsafe impl Send for RoTxUnsync {}
pub type RoCursorSync<'tx> = Cursor<'tx, RoSync>;
pub type RwCursorSync<'tx> = Cursor<'tx, RwSync>;
pub type RoCursorUnsync<'tx> = Cursor<'tx, Ro>;
pub type RwCursorUnsync<'tx> = Cursor<'tx, Rw>;
pub type IterKeyVals<'tx, 'cur, K, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
Iter<'tx, 'cur, K, Key, Value, { ffi::MDBX_NEXT }>;
pub type RoDupIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDup<'tx, 'cur, RoSync, Key, Value>;
pub type RwDupIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDup<'tx, 'cur, RwSync, Key, Value>;
pub type RoDupIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDup<'tx, 'cur, Ro, Key, Value>;
pub type RwDupIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDup<'tx, 'cur, Rw, Key, Value>;
pub type RoDupIterOfKeySync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupOfKey<'tx, 'cur, RoSync, Value>;
pub type RwDupIterOfKeySync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupOfKey<'tx, 'cur, RwSync, Value>;
pub type RoDupIterOfKeyUnsync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupOfKey<'tx, 'cur, Ro, Value>;
pub type RwDupIterOfKeyUnsync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupOfKey<'tx, 'cur, Rw, Value>;
pub type RoIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterKeyVals<'tx, 'cur, RoSync, Key, Value>;
pub type RwIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterKeyVals<'tx, 'cur, RwSync, Key, Value>;
pub type RoIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterKeyVals<'tx, 'cur, Ro, Key, Value>;
pub type RwIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterKeyVals<'tx, 'cur, Rw, Key, Value>;
pub type RoDupFixedIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDupFixed<'tx, 'cur, RoSync, Key, Value>;
pub type RwDupFixedIterSync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDupFixed<'tx, 'cur, RwSync, Key, Value>;
pub type RoDupFixedIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDupFixed<'tx, 'cur, Ro, Key, Value>;
pub type RwDupFixedIterUnsync<'tx, 'cur, Key = Cow<'tx, [u8]>, Value = Cow<'tx, [u8]>> =
IterDupFixed<'tx, 'cur, Rw, Key, Value>;
pub type RoDupFixedIterOfKeySync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupFixedOfKey<'tx, 'cur, RoSync, Value>;
pub type RwDupFixedIterOfKeySync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupFixedOfKey<'tx, 'cur, RwSync, Value>;
pub type RoDupFixedIterOfKeyUnsync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupFixedOfKey<'tx, 'cur, Ro, Value>;
pub type RwDupFixedIterOfKeyUnsync<'tx, 'cur, Value = Cow<'tx, [u8]>> =
IterDupFixedOfKey<'tx, 'cur, Rw, Value>;