use std::any::Any;
use std::io;
use bytes::Bytes;
use cookie::CookieJar;
use http::{HeaderMap, Method, Uri, Version};
use http_body_util::combinators::UnsyncBoxBody;
use hyper::upgrade::OnUpgrade;
use crate::helpers::http::request::path::RequestPathSegments;
use crate::state::request_id::RequestId;
#[cfg(feature = "derive")]
pub use gotham_derive::StateData;
pub trait StateData: Any + Send {}
impl StateData for UnsyncBoxBody<Bytes, io::Error> {}
impl StateData for Method {}
impl StateData for Uri {}
impl StateData for Version {}
impl StateData for HeaderMap {}
impl StateData for CookieJar {}
impl StateData for OnUpgrade {}
impl StateData for RequestPathSegments {}
impl StateData for RequestId {}