pbtree
pbtree is a generic piece-table text buffer for editor workloads.
It is designed for efficient edits (insert/delete in the middle of large documents), while still supporting fast iteration, range access, and substring search.
Features
- Generic buffer core:
PieceTable<T> - Balanced B+ tree storage for scalable edit operations
- Cursor and range iteration APIs
- Search APIs:
- KMP substring search (generic)
- optimized byte search paths (
u8) - regex search (
u8andcharvariants) - grapheme-aware helpers for
char
- Optional compact backend:
CompactPieceTable<T>
Quick start
use PieceTable;
let mut table = new;
table.insert;
table.delete;
let text: String = table.iter.copied.collect;
assert_eq!;
Compact backend
use ;
let mut table = new;
table.insert;
assert_eq!;
assert!;
Status
This crate is actively used in the rusk editor project and benchmarked on large-document workloads.