Trait redb::ReadableTable
source · pub trait ReadableTable<K: RedbKey + ?Sized, V: RedbValue + ?Sized> {
fn get<'a, 'b: 'a, AK>(
&self,
key: &'a AK
) -> Result<Option<AccessGuard<'_, V>>, Error>
where
K: 'b,
AK: Borrow<K::RefBaseType<'b>> + ?Sized;
fn range<'a, KR>(
&'a self,
range: impl RangeBounds<KR> + 'a
) -> Result<RangeIter<'a, K, V>, Error>
where
K: 'a,
KR: Borrow<K::RefBaseType<'a>> + ?Sized + 'a;
fn len(&self) -> Result<usize, Error>;
fn is_empty(&self) -> Result<bool, Error>;
fn iter(&self) -> Result<RangeIter<'_, K, V>, Error> { ... }
}
Required Methods§
sourcefn get<'a, 'b: 'a, AK>(
&self,
key: &'a AK
) -> Result<Option<AccessGuard<'_, V>>, Error>where
K: 'b,
AK: Borrow<K::RefBaseType<'b>> + ?Sized,
fn get<'a, 'b: 'a, AK>(
&self,
key: &'a AK
) -> Result<Option<AccessGuard<'_, V>>, Error>where
K: 'b,
AK: Borrow<K::RefBaseType<'b>> + ?Sized,
Returns the value corresponding to the given key
sourcefn range<'a, KR>(
&'a self,
range: impl RangeBounds<KR> + 'a
) -> Result<RangeIter<'a, K, V>, Error>where
K: 'a,
KR: Borrow<K::RefBaseType<'a>> + ?Sized + 'a,
fn range<'a, KR>(
&'a self,
range: impl RangeBounds<KR> + 'a
) -> Result<RangeIter<'a, K, V>, Error>where
K: 'a,
KR: Borrow<K::RefBaseType<'a>> + ?Sized + 'a,
Returns a double-ended iterator over a range of elements in the table
Examples
Usage:
use redb::*;
const TABLE: TableDefinition<&str, u64> = TableDefinition::new("my_data");
let db = unsafe { Database::create(filename)? };
let write_txn = db.begin_write()?;
{
let mut table = write_txn.open_table(TABLE)?;
table.insert("a", &0)?;
table.insert("b", &1)?;
table.insert("c", &2)?;
}
write_txn.commit()?;
let read_txn = db.begin_read()?;
let table = read_txn.open_table(TABLE)?;
let mut iter = table.range("a".."c")?;
let (key, value) = iter.next().unwrap();
assert_eq!("a", key.value());
assert_eq!(0, value.value());