3 releases
Uses new Rust 2024
new 0.1.3 | May 7, 2025 |
---|---|
0.1.2 | May 6, 2025 |
0.1.1 | May 6, 2025 |
#378 in Procedural macros
76 downloads per month
Used in mdbx-derive-tests
28KB
204 lines
MDBX Derive
Macro to define and derive mdbx types.
#[cfg(test)]
mod test {
use std::io::Cursor;
use bincode::{Decode, Encode};
use mdbx_derive::{
KeyObject, KeyObjectDecode, KeyObjectEncode, TableObjectDecode, TableObjectEncode,
ZstdBincodeObject,
};
use serde::{Deserialize, Serialize};
#[derive(Encode, Decode, Default, Serialize, Deserialize, KeyObject, ZstdBincodeObject)]
struct TrivialKey {
a: u64,
b: u64,
}
#[test]
fn trivial_key() {
assert_eq!(TrivialKey::KEYSIZE, std::mem::size_of::<u64>() * 2);
let k = TrivialKey { a: 42, b: 24 };
let ky = k.key_encode().expect("fail to encode");
assert_eq!(ky.len(), std::mem::size_of::<u64>() * 2);
let ky = TrivialKey::key_decode(&ky).expect("fail to decode key");
assert_eq!(ky.a, 42);
assert_eq!(ky.b, 24);
}
#[test]
fn trivial_object() {
let k = TrivialKey { a: 42, b: 24 };
let ky = k.table_encode().expect("fail to encode");
let expected = mdbx_derive::zstd::encode_all(
Cursor::new(
mdbx_derive::bincode::encode_to_vec(&k, mdbx_derive::bincode::config::standard())
.expect("bincode"),
),
1,
)
.expect("zstd");
assert_eq!(ky, expected);
let ky = TrivialKey::table_decode(&ky).expect("fail to decode key");
assert_eq!(ky.a, 42);
assert_eq!(ky.b, 24);
}
}
Dependencies
~5.5MB
~102K SLoC