hyperlite 0.1.0

Lightweight HTTP framework built on hyper, tokio, and tower
Documentation
use matchit::Router;

fn main() {
    println!("=== Test 1: Simple static route ===");
    let mut r1 = Router::new();
    r1.insert("/hello", "static_hello").unwrap();
    match r1.at("/hello") {
        Ok(m) => println!("✓ Matched /hello: {:?}", m.value),
        Err(e) => println!("✗ Failed: {:?}", e),
    }

    println!("\n=== Test 2: Dynamic route with colon syntax ===");
    let mut r2 = Router::new();
    let insert_result = r2.insert("/users/:id", "dynamic_user");
    println!("Insert result: {:?}", insert_result);

    match r2.at("/users/123") {
        Ok(m) => {
            println!("✓ Matched /users/123");
            println!("  Value: {:?}", m.value);
            println!("  Params:");
            for (k, v) in m.params.iter() {
                println!("    {} = {}", k, v);
            }
        }
        Err(e) => println!("✗ Failed to match: {:?}", e),
    }

    println!("\n=== Test 3: Dynamic route with curly braces ===");
    let mut r3 = Router::new();
    let insert_result = r3.insert("/posts/{post_id}", "dynamic_post");
    println!("Insert result: {:?}", insert_result);

    match r3.at("/posts/456") {
        Ok(m) => {
            println!("✓ Matched /posts/456");
            println!("  Value: {:?}", m.value);
            println!("  Params:");
            for (k, v) in m.params.iter() {
                println!("    {} = {}", k, v);
            }
        }
        Err(e) => println!("✗ Failed to match: {:?}", e),
    }

    println!("\n=== Test 4: Wildcard route ===");
    let mut r4 = Router::new();
    r4.insert("/files/*path", "files").unwrap();
    match r4.at("/files/docs/readme.txt") {
        Ok(m) => {
            println!("✓ Matched /files/docs/readme.txt");
            println!("  Value: {:?}", m.value);
            println!("  Params:");
            for (k, v) in m.params.iter() {
                println!("    {} = {}", k, v);
            }
        }
        Err(e) => println!("✗ Failed to match: {:?}", e),
    }
}