[][src]Module kv::cbor

The cbor encoding allows for any {de|se}rializable type to be read/written to the database using a ValueBuf, for example:

use serde::{Deserialize, Serialize};
use kv::cbor::Cbor;
use kv::{Config, Encoding, Error, Manager, Serde, ValueBuf};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
struct Testing {
    a: i32,
    b: String
}

fn run() -> Result<(), Error> {
    let mut mgr = Manager::new();
    let mut cfg = Config::default("/tmp/rust-kv");
    let handle = mgr.open(cfg)?;
    let store = handle.write()?;
    let bucket = store.bucket::<&str, ValueBuf<Cbor<Testing>>>(None)?;
    let mut txn = store.write_txn()?;
    let t = Testing{a: 123, b: "abc".to_owned()};
    txn.set(
        &bucket,
        "testing",
        Cbor::to_value_buf(t)?,
    )?;
    txn.commit()?;

    let txn = store.read_txn()?;
    let buf = txn.get(&bucket, "testing")?;
    let v = buf.inner()?;
    println!("{:?}", v.to_serde());
    Ok(())
}

Structs

Cbor

An opaque type for CBOR encoding that wraps a Serde-compatible type T.