cot 0.6.0

The Rust web framework for lazy developers.
Documentation
use cot::http::Request;
use cot::request::RequestHead;
use cot::request::extractors::FromRequestHead;

#[derive(FromRequestHead)]
#[expect(dead_code)]
struct MyStruct {
    user_id: DummyExtractor,
    session_id: DummyExtractor,
}

#[derive(FromRequestHead)]
struct MyUnitStruct;

#[derive(FromRequestHead)]
struct MyTupleStruct(DummyExtractor, DummyExtractor);

struct DummyExtractor;

impl FromRequestHead for DummyExtractor {
    async fn from_request_head(_head: &RequestHead) -> cot::Result<Self> {
        Ok(Self)
    }
}

#[cot::test]
async fn test_named_struct() {
    let req = Request::builder().uri("/").body(()).unwrap();
    let (head, ()) = req.into_parts();
    let _ = MyStruct::from_request_head(&head).await.unwrap();
}

#[cot::test]
async fn test_unit_struct() {
    let req = Request::builder().uri("/").body(()).unwrap();
    let (head, ()) = req.into_parts();
    let _ = MyUnitStruct::from_request_head(&head).await.unwrap();
}

#[cot::test]
async fn test_tuple_struct() {
    let req = Request::builder().uri("/").body(()).unwrap();
    let (head, ()) = req.into_parts();
    let _ = MyTupleStruct::from_request_head(&head).await.unwrap();
}