Expand description
Traits allowing to use types as key or value
Any type that implements Storable
can be used as a key or value in a
Db
. Implementation is unsafe
and must be correct and not
change between (re-)opening environments.
Types that have a fixed-length byte representation should additionally
implement StorableConstBytesLen
.
When values are retrieved from a database, e.g. with
Txn::get
, they are returned as a pointer of type
Storable::AlignedRef
, which may be an ordinary shared reference or a
smart-pointer holding a copy for the purpose of memory alignment. These
references may be used directly (via dereferencing) or be
converted into an owned value using
PointerIntoOwned::into_owned
(alternatively, method Txn::get_owned
may be used
to retrieve an owned value, which isn’t provided for the cursor methods
though).
When storing values, e.g. with Txn::put
, a reference
to the Storable
value must be provided. Alternatively, a reference-like
value can be provided if it implements StorableRef
. For example,
(&'a i32, &'a str)
implements StorableRef<'a, (i32, String)>
and may be
passed instead of &'a (i32, String)
to avoid unnecessary cloning to
construct the tuple.
Traits
Types that can be borrowed as a type that is Storable
Types that can be stored
Types that can be stored with a fixed-length byte representation
Reference-like types which can be used to store a Storable
type
Storable
types where the owning type of the
pointed-to restored value is a certain type