///|
/// Handler ID for storing handlers
pub(all) struct HandlerId(Int) derive(Eq, Hash, Show)
///|
/// Router trait for HTTP routing
/// The router stores handlers by ID, and the actual handler lookup is done externally
pub(open) trait Router {
/// Get the name of the router implementation
name(Self) -> String
/// Add a route to the router, returns the handler ID
add(Self, Method, String) -> HandlerId
/// Match a request and return matching handler IDs with params
match_(Self, Method, String) -> MatchResult[HandlerId]
}