Expand description
§Nut
Key-value embed database, which is basically port of Bolt DB
§Examples
§Create db and put something
use nut::DBBuilder;
let mut db = DBBuilder::new("test.db").build().unwrap();
let mut tx = db.begin_rw_tx().unwrap();
{
let mut flowers = tx.create_bucket(b"flowers").unwrap();
// returns mutable reference to bucket,
// which prevents of reborrowing tx
flowers.put(
b"iris",
b"song by American alternative rock band Goo Goo Dolls".to_vec()
).unwrap();
flowers.put(
b"binary data",
vec![127, 127, 127, 127]
).unwrap();
{
// you can create subbuckets as well
let mut annuals = flowers
.create_bucket_if_not_exists(b"annuals").unwrap();
// api is basically same as for transaction
annuals.put(
b"corn",
b"American nu metal band from Bakersfield".to_vec()
).unwrap();
// releasing subbucket
}
// releasing bucket to be able use tx again
}
// due to RAII tx will be automatically closed if no error occured,
// or rolled back if there was some.
// Additionally you can commit or rollback manually
tx.rollback().unwrap();
§Getting data back
use nut::DBBuilder;
let mut db = DBBuilder::new("test.db").build().unwrap();
// creating read only transaction
// read only ransaction will be automatically rolled back
let mut tx = db.begin_tx().unwrap();
// getting bucket
let flowers = tx.bucket(b"flowers").unwrap();
let data = flowers.get(b"iris").unwrap();
assert_eq!(
data,
&b"song by American alternative rock band Goo Goo Dolls"[..]
);
§Getting available buckets
use nut::DBBuilder;
let mut db = DBBuilder::new("test.db").build().unwrap();
let mut tx = db.begin_tx().unwrap();
{
// .buckets() available to conveniently retrieve all buckets keys
let bucket_names = tx.buckets(); // returns Vec<Vec<u8>>
// bucket key is any binary data, not only string
assert_eq!(bucket_names, vec!["flowers".as_bytes().to_vec()]);
}
{
// additionally there is .cursor() method
// that returns Cursor struct,
// which is able to iterate through bucket contents
let cursor = tx.cursor();
assert_eq!(
&cursor.first().unwrap().value.unwrap(),
&"flowers".as_bytes()
);
}
Structs§
- Bucket
- Bucket represents a collection of key/value pairs inside the database.
- Bucket
Stats - Records statistics about resources used by a bucket.
- Check
Mode - Defines when db check will occur
- Cursor
- Cursor represents an iterator that can traverse over all key/value pairs in a bucket in sorted order. Cursors see nested buckets with value == None. Cursors can be obtained from a transaction and are valid as long as the transaction is open.
- Cursor
Item - Contains references to retrieved bucket’s item key, value and flags
- DB
- Database
- DBBuilder
- Struct to construct database
- DBStats
- Stats represents statistics about the database.
- Flags
- Defines type of the page
- RWTx
Guard - Guard returned by DB.begin_rw_tx()
- Tx
- Transaction
- TxGuard
- Guard returned by DB.begin_tx()
- TxStats
- Transaction statistics
Enums§
- Error
- These error can be returned when opening or calling methods on a DB, Transaction etc…
- Freed
OrPage Info