use crate::http::{ReqResBuilder, Response, StatusCode, Version};
use core::ops::{Deref, DerefMut};
#[derive(Debug)]
pub struct ResBuilder<RRD> {
rrb: ReqResBuilder<RRD>,
status_code: StatusCode,
version: Version,
}
impl<RRD> ResBuilder<RRD> {
#[inline]
pub const fn ok(rrd: RRD) -> Self {
Self { rrb: ReqResBuilder::new(rrd), status_code: StatusCode::Ok, version: Version::Http2 }
}
#[inline]
pub fn into_response(self) -> Response<RRD> {
Response::new(self.rrb.rrd, self.status_code, self.version)
}
#[inline]
pub const fn status_code(&mut self, status_code: StatusCode) -> &mut Self {
self.status_code = status_code;
self
}
}
impl<RRD> Default for ResBuilder<RRD>
where
RRD: Default,
{
#[inline]
fn default() -> Self {
Self::ok(RRD::default())
}
}
impl<RRD> AsMut<ResBuilder<RRD>> for ResBuilder<RRD> {
#[inline]
fn as_mut(&mut self) -> &mut ResBuilder<RRD> {
self
}
}
impl<RRD> AsRef<ResBuilder<RRD>> for ResBuilder<RRD> {
#[inline]
fn as_ref(&self) -> &ResBuilder<RRD> {
self
}
}
impl<RRD> Deref for ResBuilder<RRD> {
type Target = ReqResBuilder<RRD>;
#[inline]
fn deref(&self) -> &Self::Target {
&self.rrb
}
}
impl<RRD> DerefMut for ResBuilder<RRD> {
#[inline]
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.rrb
}
}