use std::{fmt::Display, str::FromStr}; #[derive(PartialEq, Eq, Clone, Debug, Copy, PartialOrd, Ord)] pub enum Method { Get, Head, Post, Put, Delete, Connect, Options, Trace, Patch, } impl Display for Method { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Get => write!(f, "GET"), Self::Head => write!(f, "HEAD"), Self::Post => write!(f, "POST"), Self::Put => write!(f, "PUT"), Self::Delete => write!(f, "DELETE"), Self::Connect => write!(f, "CONNECT"), Self::Options => write!(f, "OPTIONS"), Self::Trace => write!(f, "TRACE"), Self::Patch => write!(f, "PATCH"), } } } impl FromStr for Method { type Err = &'static str; fn from_str(s: &str) -> Result<Self, Self::Err> { match s { "GET" => Ok(Self::Get), "HEAD" => Ok(Self::Head), "POST" => Ok(Self::Post), "PUT" => Ok(Self::Put), "DELETE" => Ok(Self::Delete), "CONNECT" => Ok(Self::Connect), "OPTIONS" => Ok(Self::Options), "TRACE" => Ok(Self::Trace), "PATCH" => Ok(Self::Patch), _ => Err("Not a Method"), } } }