use coap_message::{MinimalWritableMessage, MutableWritableMessage, ReadableMessage};
pub trait Handler {
type RequestData;
type ExtractRequestError: core::fmt::Debug + coap_message::error::RenderableOnMinimal;
type BuildResponseError<M: MinimalWritableMessage>: core::fmt::Debug
+ coap_message::error::RenderableOnMinimal;
fn extract_request_data<M: ReadableMessage>(
&mut self,
request: &M,
) -> Result<Self::RequestData, Self::ExtractRequestError>;
fn estimate_length(&mut self, request: &Self::RequestData) -> usize;
fn build_response<M: MutableWritableMessage>(
&mut self,
response: &mut M,
request: Self::RequestData,
) -> Result<(), Self::BuildResponseError<M>>;
}