Skip to content

Commit b98fab4

Browse files
committed
feat: claude
1 parent 4b29595 commit b98fab4

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

CLAUDE.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# mdbx Crate Notes
2+
3+
## Crate Overview
4+
5+
Rust bindings for libmdbx (MDBX database). Crate name: `signet-libmdbx`.
6+
7+
## Key Types
8+
9+
- `Environment` - Database environment (in `src/sys/environment.rs`)
10+
- `Transaction<K>` - Transaction with kind marker RO/RW (in `src/tx/transaction.rs`)
11+
- `Database` - Handle to a database, stores `dbi` + `DatabaseFlags` (in `src/tx/database.rs`)
12+
- `Cursor<'tx, K>` - Database cursor, stores `&Transaction`, raw cursor ptr, and `Database` (in `src/tx/cursor.rs`)
13+
14+
## API Patterns
15+
16+
### Cursor Creation
17+
18+
```rust
19+
let db = txn.open_db(None).unwrap(); // Returns Database (has dbi + flags)
20+
let cursor = txn.cursor(db).unwrap(); // Takes Database, NOT raw dbi
21+
```
22+
23+
### Database Flags Validation
24+
25+
DUP_SORT/DUP_FIXED methods validate flags at runtime:
26+
27+
- `require_dup_sort()` returns `MdbxError::RequiresDupSort`
28+
- `require_dup_fixed()` returns `MdbxError::RequiresDupFixed`
29+
- `debug_assert_integer_key()` validates key length (4 or 8 bytes) in debug builds
30+
31+
Methods requiring DUP_SORT: `first_dup`, `last_dup`, `next_dup`, `prev_dup`, `get_both`, `get_both_range`
32+
Methods requiring DUP_FIXED: `get_multiple`, `next_multiple`, `prev_multiple`
33+
34+
### Error Types
35+
36+
- `MdbxError` - FFI/database errors (in `src/error.rs`)
37+
- `ReadError` - Wraps MdbxError + decoding errors for read operations
38+
- `MdbxResult<T>` = `Result<T, MdbxError>`
39+
- `ReadResult<T>` = `Result<T, ReadError>`
40+
41+
## File Layout
42+
43+
```
44+
src/
45+
lib.rs - Re-exports
46+
error.rs - MdbxError, ReadError
47+
flags.rs - DatabaseFlags, WriteFlags, etc.
48+
codec.rs - TableObject trait
49+
tx/
50+
mod.rs
51+
cursor.rs - Cursor impl
52+
database.rs - Database struct
53+
transaction.rs - Transaction impl
54+
iter.rs - Iterator types
55+
sys/
56+
environment.rs - Environment impl
57+
tests/
58+
cursor.rs - Cursor tests
59+
transaction.rs - Transaction tests
60+
environment.rs - Environment tests
61+
benches/
62+
cursor.rs - Cursor benchmarks
63+
```
64+
65+
## Testing
66+
67+
```bash
68+
cargo t # Run all tests
69+
cargo t --test cursor # Run cursor tests only
70+
cargo clippy --all-features --all-targets
71+
cargo clippy --no-default-features --all-targets
72+
cargo +nightly fmt
73+
```

0 commit comments

Comments
 (0)