pub trait TxRwApi<'tx>: TxRwRefApi<'tx> {
// Required methods
fn rollback(self) -> Result<()>;
fn commit(self) -> Result<()>;
}Expand description
RW transaction API + Commit
Required Methods§
Sourcefn rollback(self) -> Result<()>
fn rollback(self) -> Result<()>
Closes the transaction and ignores all previous updates.
use bbolt_rs::*;
fn main() -> Result<()> {
let mut db = Bolt::open_mem()?;
db.update(|mut tx| {
let mut b = tx.create_bucket_if_not_exists("test")?;
b.put("key", "value")?;
Ok(())
})?;
let mut tx = db.begin_rw()?;
let mut b = tx.bucket_mut("test").unwrap();
b.put("key", "new value")?;
tx.rollback()?;
db.view(|tx| {
let b = tx.bucket("test").unwrap();
assert_eq!(Some(b"value".as_slice()), b.get("key"));
Ok(())
})?;
Ok(())
}Sourcefn commit(self) -> Result<()>
fn commit(self) -> Result<()>
commit writes all changes to disk and updates the meta page. Returns an error if a disk write error occurs
use bbolt_rs::*;
fn main() -> Result<()> {
let mut db = Bolt::open_mem()?;
let mut tx = db.begin_rw()?;
tx.create_bucket_if_not_exists("test1")?;
tx.create_bucket_if_not_exists("test2")?;
tx.create_bucket_if_not_exists("test3")?;
tx.commit()?;
db.view(|tx| {
let mut c = tx.cursor();
assert_eq!(Some((b"test1".as_slice(), None)), c.first());
assert_eq!(Some((b"test2".as_slice(), None)), c.next());
assert_eq!(Some((b"test3".as_slice(), None)), c.next());
Ok(())
})?;
Ok(())
}Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.