pub struct TxnRo<'a> { /* private fields */ }
Expand description
Read-only transaction
A read-only transaction can be started with Env::txn_ro
.
The methods for read-only access to the database are accessible through the
Txn
trait (which is implemented by TxnRo
and TxnRw
).
Read-only transactions do not need to be committed or aborted; their handles can be simply dropped when not needed anymore.
Opposed to read-write transactions (TxnRw
), read-only transactions
(TxnRo
) are Send
. However, they are not Sync
. Thus, if you want
to use a read-only transaction from several threads concurrently, you have
to synchronize the use, e.g. by wrapping the TxnRo
in a Mutex
.
Trait Implementations§
source§impl<'a> Txn for TxnRo<'a>
impl<'a> Txn for TxnRo<'a>
source§fn get<'kr, K, V, C, KRef>(
&self,
db: &Db<K, V, C>,
key: KRef
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn get<'kr, K, V, C, KRef>( &self, db: &Db<K, V, C>, key: KRef ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
Get reference to value in database
source§fn new_cursor<K, V, C>(&self, db: &Db<K, V, C>) -> Result<Cursor<K, V, C>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn new_cursor<K, V, C>(&self, db: &Db<K, V, C>) -> Result<Cursor<K, V, C>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Create a new cursor
source§fn cursor_get_current_value_count<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<usize>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_get_current_value_count<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<usize>where K: ?Sized + Storable, V: ?Sized + Storable,
Get number of values for current cursor position
source§fn cursor_set_first<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_first<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Set cursor to first entry in database Read more
source§fn cursor_set_first_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_first_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Set cursor to first entry in database and get pair
source§fn cursor_set_last<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_last<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Set cursor to last entry in database Read more
source§fn cursor_set_last_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_last_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Set cursor to last entry in database and get pair
source§fn cursor_get_current_key<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<K::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_get_current_key<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<K::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Get key at current cursor position
source§fn cursor_get_current_value<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_get_current_value<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Get value at current cursor position
source§fn cursor_get_current_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_get_current_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Get key-value pair at current cursor position
source§fn cursor_set_key<'kr, K, V, C, KRef>(
&self,
cursor: &Cursor<K, V, C>,
key: KRef
) -> Result<bool>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn cursor_set_key<'kr, K, V, C, KRef>( &self, cursor: &Cursor<K, V, C>, key: KRef ) -> Result<bool>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
Set cursor to key Read more
source§fn cursor_set_key_get_value<'kr, K, V, C, KRef>(
&self,
cursor: &Cursor<K, V, C>,
key: KRef
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn cursor_set_key_get_value<'kr, K, V, C, KRef>( &self, cursor: &Cursor<K, V, C>, key: KRef ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
Set cursor to key and get value
source§fn cursor_search_key<'kr, K, V, C, KRef>(
&self,
cursor: &Cursor<K, V, C>,
key: KRef
) -> Result<bool>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn cursor_search_key<'kr, K, V, C, KRef>( &self, cursor: &Cursor<K, V, C>, key: KRef ) -> Result<bool>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
Set cursor to key or next greater key if not existent Read more
source§fn cursor_search_key_get_key<'kr, K, V, C, KRef>(
&self,
cursor: &Cursor<K, V, C>,
key: KRef
) -> Result<Option<K::AlignedRef<'_>>>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn cursor_search_key_get_key<'kr, K, V, C, KRef>( &self, cursor: &Cursor<K, V, C>, key: KRef ) -> Result<Option<K::AlignedRef<'_>>>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
👎Deprecated since 0.14.0: use <code>cursor_search_key</code> (with subsequent <code>cursor_get_current_key</code>) or <code>cursor_search_key_get_pair</code>
Set cursor to key or next greater key if not existent and get key
source§fn cursor_search_key_get_pair<'kr, K, V, C, KRef>(
&self,
cursor: &Cursor<K, V, C>,
key: KRef
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable,
C: Constraint,
KRef: StorableRef<'kr, K>,
fn cursor_search_key_get_pair<'kr, K, V, C, KRef>( &self, cursor: &Cursor<K, V, C>, key: KRef ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable, C: Constraint, KRef: StorableRef<'kr, K>,
Set cursor to key or next greater key if not existent and get pair
source§fn cursor_set_next<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_next<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to next entry in database Read more
source§fn cursor_set_next_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_next_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to next entry in database and get pair
source§fn cursor_set_prev<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_prev<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to previous entry in database Read more
source§fn cursor_set_prev_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_prev_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to previous entry in database and get pair
source§fn cursor_set_next_key<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_next_key<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to first value of next key Read more
source§fn cursor_set_next_key_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_next_key_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to first value of next key and get pair
source§fn cursor_set_prev_key<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_prev_key<K, V, C>(&self, cursor: &Cursor<K, V, C>) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to last value of previous key Read more
source§fn cursor_set_prev_key_get_pair<K, V, C>(
&self,
cursor: &Cursor<K, V, C>
) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
C: Constraint,
fn cursor_set_prev_key_get_pair<K, V, C>( &self, cursor: &Cursor<K, V, C> ) -> Result<Option<(K::AlignedRef<'_>, V::AlignedRef<'_>)>>where K: ?Sized + Storable, V: ?Sized + Storable, C: Constraint,
Move cursor to last value of previous key and get pair
source§fn cursor_set_first_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_first_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to first value of current key Read more
source§fn cursor_set_first_value_get_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_first_value_get_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to first value of current key and get value
source§fn cursor_set_last_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_last_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to last value of current key Read more
source§fn cursor_set_last_value_get_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_last_value_get_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to last value of current key and get value
source§fn cursor_set_pair<'kr, 'vr, K, V, KRef, VRef>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>,
key: KRef,
value: VRef
) -> Result<bool>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable + 'vr,
KRef: StorableRef<'kr, K>,
VRef: StorableRef<'vr, V>,
fn cursor_set_pair<'kr, 'vr, K, V, KRef, VRef>( &self, cursor: &Cursor<K, V, KeysDuplicate>, key: KRef, value: VRef ) -> Result<bool>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable + 'vr, KRef: StorableRef<'kr, K>, VRef: StorableRef<'vr, V>,
Set cursor to key-value pair Read more
source§fn cursor_set_key_search_value<'kr, 'vr, K, V, KRef, VRef>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>,
key: KRef,
value: VRef
) -> Result<bool>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable + 'vr,
KRef: StorableRef<'kr, K>,
VRef: StorableRef<'vr, V>,
fn cursor_set_key_search_value<'kr, 'vr, K, V, KRef, VRef>( &self, cursor: &Cursor<K, V, KeysDuplicate>, key: KRef, value: VRef ) -> Result<bool>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable + 'vr, KRef: StorableRef<'kr, K>, VRef: StorableRef<'vr, V>,
Set cursor to key and value or next greater value if not existent Read more
source§fn cursor_set_key_search_value_get_value<'kr, 'vr, K, V, KRef, VRef>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>,
key: KRef,
value: VRef
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable + 'kr,
V: ?Sized + Storable + 'vr,
KRef: StorableRef<'kr, K>,
VRef: StorableRef<'vr, V>,
fn cursor_set_key_search_value_get_value<'kr, 'vr, K, V, KRef, VRef>( &self, cursor: &Cursor<K, V, KeysDuplicate>, key: KRef, value: VRef ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable + 'kr, V: ?Sized + Storable + 'vr, KRef: StorableRef<'kr, K>, VRef: StorableRef<'vr, V>,
Set cursor to key and value or next greater value if not existent and get value
source§fn cursor_set_next_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_next_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to next value of current key Read more
source§fn cursor_set_next_value_get_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_next_value_get_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to next value of current key and get value
source§fn cursor_set_prev_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<bool>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_prev_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<bool>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to next value of current key Read more
source§fn cursor_set_prev_value_get_value<K, V>(
&self,
cursor: &Cursor<K, V, KeysDuplicate>
) -> Result<Option<V::AlignedRef<'_>>>where
K: ?Sized + Storable,
V: ?Sized + Storable,
fn cursor_set_prev_value_get_value<K, V>( &self, cursor: &Cursor<K, V, KeysDuplicate> ) -> Result<Option<V::AlignedRef<'_>>>where K: ?Sized + Storable, V: ?Sized + Storable,
Move cursor to next value of current key and get value