RoTxn

Struct RoTxn 

Source
pub struct RoTxn<'e, T = AnyTls> { /* private fields */ }
Expand description

A read-only transaction.

§LMDB Limitations

It’s a must to keep read transactions short-lived.

Active Read transactions prevent the reuse of pages freed by newer write transactions, thus the database can grow quickly.

§OSX/Darwin Limitation

At least 10 transactions can be active at the same time in the same process, since only 10 POSIX semaphores can be active at the same time for a process. Threads are in the same process space.

If the process crashes in the POSIX semaphore locking section of the transaction, the semaphore will be kept locked.

Note: if your program already use POSIX semaphores, you will have less available for heed/LMDB!

You may increase the limit by editing it at your own risk: /Library/LaunchDaemons/sysctl.plist

§This struct is covariant

#[allow(dead_code)]
trait CovariantMarker<'a>: 'static {
    type R: 'a;

    fn is_covariant(&'a self) -> &'a Self::R;
}

impl<'a, T> CovariantMarker<'a> for heed::RoTxn<'static, T> {
    type R = heed::RoTxn<'a, T>;

    fn is_covariant(&'a self) -> &'a heed::RoTxn<'a, T> {
        self
    }
}

Implementations§

Source§

impl<'e, T> RoTxn<'e, T>

Source

pub fn id(&self) -> usize

Return the transaction’s ID.

This returns the identifier associated with this transaction. For a RoTxn, this corresponds to the snapshot being read; concurrent readers will frequently have the same transaction ID.

Source

pub fn commit(self) -> Result<()>

Commit a read transaction.

Synchronizing some Env metadata with the global handle.

§LMDB

It’s mandatory in a multi-process setup to call RoTxn::commit upon read-only database opening. After the transaction opening, the database is dropped. The next transaction might return Io(Os { code: 22, kind: InvalidInput, message: "Invalid argument" }) known as EINVAL.

Trait Implementations§

Source§

impl<'a> Deref for RoTxn<'a, WithTls>

Source§

type Target = RoTxn<'a>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'a> Deref for RoTxn<'a, WithoutTls>

Source§

type Target = RoTxn<'a>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T> Drop for RoTxn<'_, T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for RoTxn<'_, WithoutTls>

Is sendable only if MDB_NOTLS has been used to open this transaction.

Auto Trait Implementations§

§

impl<'e, T> Freeze for RoTxn<'e, T>

§

impl<'e, T> RefUnwindSafe for RoTxn<'e, T>
where T: RefUnwindSafe,

§

impl<'e, T = AnyTls> !Send for RoTxn<'e, T>

§

impl<'e, T = AnyTls> !Sync for RoTxn<'e, T>

§

impl<'e, T> Unpin for RoTxn<'e, T>

§

impl<'e, T> UnwindSafe for RoTxn<'e, T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.