nuclear-router 0.1.0

A URL router library with focus on speed
Documentation
mod captures;
mod core;
mod endpoint;
mod error;
mod imp;
mod owned_captures;

pub use self::captures::Captures;
pub use self::error::RouterError;
pub use self::owned_captures::OwnedCaptures;

use self::endpoint::Endpoint;
use crate::bitset::FixedBitSet;
use crate::strmap::StrMap;

#[derive(Debug, Default)]
pub struct Router<T> {
    segments: Vec<Segment>,
    routes: Vec<Route>,
    endpoints: Vec<Endpoint<T>>,
}

type Bits = u128;

#[derive(Debug)]
struct Segment {
    static_map: StrMap<FixedBitSet<Bits>>,
    dynamic: FixedBitSet<Bits>,
    wildcard: FixedBitSet<Bits>,
    num_mask: FixedBitSet<Bits>,
}

#[derive(Debug)]
struct Route {
    segment_num: usize,
    rank: u64,
    wildcard: Option<Box<str>>,
    captures: Vec<(Box<str>, usize)>,
    nested: bool,
}