https://github.com/pymongo/gdbm_compat
FFI binding of libgdbm_compat.so database library
https://github.com/pymongo/gdbm_compat
Last synced: 2 months ago
JSON representation
FFI binding of libgdbm_compat.so database library
- Host: GitHub
- URL: https://github.com/pymongo/gdbm_compat
- Owner: pymongo
- Created: 2021-07-10T06:43:50.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-08-01T08:27:59.000Z (almost 5 years ago)
- Last Synced: 2025-02-28T07:51:40.500Z (over 1 year ago)
- Language: Rust
- Size: 3.91 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
binding of /usr/lib/libgdbm_compat.so single file key-value database
## examples
check `examples/insert_update_query_delete.rs`
### open/close dbm
```rust
let db_filename = libc::tmpnam(std::ptr::null_mut());
let dbm_ptr = dbm_open(
db_filename,
libc::O_RDWR | libc::O_CREAT,
libc::S_IRUSR | libc::S_IWUSR,
);
dbm_close(dbm_ptr);
```
### insert
```rust
let mut key = *b"black\0";
let key_datum = datum {
dptr: key.as_mut_ptr().cast(),
dsize: key.len() as i32 - 1,
};
let mut black = Color::new(0, 0, 0);
let value_datum = datum {
dptr: (&mut black as *mut Color).cast(),
dsize: Color::SIZE as i32,
};
dbm_store(dbm_ptr, key_datum, value_datum, StoreMode::DBM_INSERT);
```
### query
```rust
let value_datum = dbm_fetch(dbm_ptr, key_datum);
if !value_datum.dptr.is_null() {
let mut color = std::mem::zeroed::();
std::ptr::copy(
value_datum.dptr.cast(),
&mut color as *mut Color,
value_datum.dsize as usize,
);
assert_eq!(color, black);
}
```
### delete
```rust
if dbm_delete(dbm_ptr, key_datum) == 0 {
println!("delete success");
}
```