hyper-simple-server 0.1.1

Simple friendly wrapper around hyper HTTP server
Documentation


use crate::prelude::*;




pub type ServerError = io::Error;
pub type ServerResult<V = ()> = Result<V, ServerError>;




pub(crate) trait ResultExtPanic<V, E : Error> : Sized {
	
	fn result (self) -> Result<V, E>;
	
	fn or_panic (self, _code : u32) -> V {
		match self.result () {
			Ok (_value) =>
				_value,
			Err (_error) =>
				_error.panic (_code),
		}
	}
}


impl <V, E : Error> ResultExtPanic<V, E> for Result<V, E> {
	
	fn result (self) -> Self {
		self
	}
}


impl <V> ResultExtPanic<V, io::Error> for Result<V, ()> {
	
	fn result (self) -> Result<V, io::Error> {
		self.map_err (|_| io::Error::new (io::ErrorKind::Other, "unspecified error"))
	}
}




pub(crate) trait ErrorExtPanic<E : Error> : Sized {
	
	fn error (self) -> E;
	
	fn panic (self, _code : u32) -> ! {
		panic! ("[{:08x}]  unexpected error encountered!  //  {}", _code, self.error ());
	}
}


impl <E : Error> ErrorExtPanic<E> for E {
	
	fn error (self) -> Self {
		self
	}
}




pub(crate) trait ResultExtWrap<V> : Sized {
	
	fn or_wrap (self, _code : u32) -> ServerResult<V>;
}


impl <V, E : Error> ResultExtWrap<V> for Result<V, E> {
	
	fn or_wrap (self, _code : u32) -> ServerResult<V> {
		match self {
			Ok (_value) =>
				Ok (_value),
			Err (_error) =>
				Err (_error.wrap (_code)),
		}
	}
}


pub(crate) trait ErrorExtWrap : Sized {
	
	fn wrap (self, _code : u32) -> ServerError;
}

impl <E : Error> ErrorExtWrap for E {
	
	fn wrap (self, _code : u32) -> ServerError {
		io::Error::new (io::ErrorKind::Other, format! ("[{:08x}]  {}", _code, self))
	}
}




#[ allow (dead_code) ]
pub(crate) fn error_with_format (_code : u32, _message : fmt::Arguments<'_>) -> ServerError {
	io::Error::new (io::ErrorKind::Other, format! ("[{:08x}]  {}", _code, _message))
}

#[ allow (dead_code) ]
pub(crate) fn error_with_message (_code : u32, _message : &str) -> ServerError {
	if ! _message.is_empty () {
		io::Error::new (io::ErrorKind::Other, format! ("[{:08x}]  {}", _code, _message))
	} else {
		error_with_code (_code)
	}
}

#[ allow (dead_code) ]
pub(crate) fn error_with_code (_code : u32) -> ServerError {
	io::Error::new (io::ErrorKind::Other, format! ("[{:08x}]  unexpected error encountered!", _code))
}




#[ allow (dead_code) ]
pub(crate) fn panic_with_format (_code : u32, _message : fmt::Arguments<'_>) -> ! {
	panic! (format! ("[{:08x}]  {}", _code, _message))
}

#[ allow (dead_code) ]
pub(crate) fn panic_with_message (_code : u32, _message : &str) -> ! {
	if ! _message.is_empty () {
		panic! (format! ("[{:08x}]  {}", _code, _message))
	} else {
		panic_with_code (_code)
	}
}

#[ allow (dead_code) ]
pub(crate) fn panic_with_code (_code : u32) -> ! {
	panic! (format! ("[{:08x}]  unexpected error encountered!", _code))
}