pipecircuit 0.0.25

Correct. Robust. Fast. Portable. Pick four.
Documentation
use core::num::NonZeroU32;
use pipecircuit::storage::query_workspace::{QueryChunk, QueryWorkspace};
use pipecircuit::storage::warp_table::{Capacity, WarpTable, WarpTableRow};

#[derive(WarpTableRow)]
struct Row {
    #[index(range)]
    rank: u64,
}

fn main() {
    let mut table = WarpTable::<Row>::try_new(Capacity::new(NonZeroU32::MIN)).unwrap();
    let _inserted = table.insert(Row { rank: 1 });
    let mut chunks = [QueryChunk::EMPTY];
    let mut scratch = QueryChunk::EMPTY;
    let mut workspace = QueryWorkspace::new(1, &mut chunks, &mut scratch).unwrap_or_else(|_| std::process::abort());
    let selection = table.query_memberships().find_rank_in(..).unwrap()
        .in_workspace(workspace.membership().unwrap()).unwrap();
    let _removed = table.remove(*table.ids().first().unwrap());
    let _ = selection.rows().next();
}