1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use crate::{r#type::Blob, tx::PtrTx, val_bytes};
pub use ffi::{mdbx_is_dirty, MDBX_error_t, MDBX_val};
use std::{borrow::Cow, ptr::null_mut};
pub fn cow_val<'a>(tx: PtrTx, val: MDBX_val) -> Blob<'a> {
let s = val_bytes!(val);
if MDBX_error_t(unsafe { mdbx_is_dirty(tx, val.iov_base) }) == MDBX_error_t::MDBX_SUCCESS {
Cow::Owned(s.to_vec())
} else {
Cow::Borrowed(s)
}
}
pub fn mdbx_val_empty() -> MDBX_val {
MDBX_val {
iov_len: 0,
iov_base: null_mut(),
}
}