use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Reply<Params> {
#[serde(skip_serializing_if = "Option::is_none")]
pub(super) parameters: Option<Params>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(super) continues: Option<bool>,
}
impl<Params> Reply<Params> {
pub fn new(parameters: Option<Params>) -> Self {
Self {
parameters,
continues: None,
}
}
pub fn set_continues(mut self, continues: Option<bool>) -> Self {
self.continues = continues;
self
}
pub fn parameters(&self) -> Option<&Params> {
self.parameters.as_ref()
}
pub fn into_parameters(self) -> Option<Params> {
self.parameters
}
pub fn continues(&self) -> Option<bool> {
self.continues
}
pub fn map<U, F>(self, f: F) -> Reply<U>
where
F: FnOnce(Params) -> U,
{
Reply {
parameters: self.parameters.map(f),
continues: self.continues,
}
}
}
impl<Params> From<Params> for Reply<Params> {
fn from(parameters: Params) -> Self {
Self::new(Some(parameters))
}
}
pub type Result<Params, Error> = core::result::Result<Reply<Params>, Error>;