1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//! # Nut
//!
//! Key-value embed database, which is basically port of Bolt DB
//!
//! # Examples
//! ## Create db and put something
//! ```no_run
//! 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
//! ```no_run
//! 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
//! ```no_run
//! 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()
//! );
//! }
//! ```
extern crate memoffset;
extern crate bitflags;
pub use ;
pub use Flags;
pub use ;
pub use Error;
pub use ;