water_http 4.0.7

fast web http framework that support http 1 and http 2 with very easy use
Documentation
use crate::http::HttpSender;
#[cfg(feature = "enable_dynamic_body_cache")]
use crate::http::request::DynamicBodyMap;
use crate::http::status_code::HttpStatusCode;

pub enum HeaderInterceptorApplyFor {
    All,
    Specific(HttpStatusCode),
}

impl HeaderInterceptorApplyFor {

    pub fn can_apply(&self,status:&HttpStatusCode)->bool{
        match self
        {
            HeaderInterceptorApplyFor::All => { true}
            HeaderInterceptorApplyFor::Specific(s) => {
                s.status == status.status
            }
        }
    }
}


pub(crate) type HeaderInterceptorFunction<const HEADER_SIZE:usize, const QUERY_SIZE: usize> =
    for<'a,'context> fn (&mut HttpSender<'a,'context,HEADER_SIZE,QUERY_SIZE>);
pub struct ContextAccessories<const HEADER_SIZE:usize, const QUERY_SIZE: usize> {
    pub (crate) initial_interceptor:Option<(HeaderInterceptorApplyFor,HeaderInterceptorFunction<HEADER_SIZE,QUERY_SIZE>)>,
    #[cfg(feature = "enable_dynamic_body_cache")]
    pub cached_body:Option<DynamicBodyMap>
}
impl <const HEADER_SIZE:usize, const QUERY_SIZE: usize>
ContextAccessories<HEADER_SIZE,QUERY_SIZE> {

    pub fn default() -> Self {
        #[cfg(not(feature = "enable_dynamic_body_cache"))]
        {
            return  ContextAccessories {
                initial_interceptor:None
            }
        }
        #[cfg(feature = "enable_dynamic_body_cache")]
        ContextAccessories {
            initial_interceptor:None,
            cached_body:None
        }
    }


}