use std::ops::{Deref, DerefMut};
use serde::{Deserialize, Serialize};
use crate::rubase::{ruresult, BaseEntity};
use crate::rubase::base_trait::BaseTrait;
use crate::rubase::get_self::GetSelfTrait;
#[derive(Serialize,Deserialize,Debug,Clone)]
pub struct RuResult<R> where R: Serialize {
#[serde(flatten )]
pub result: ruresult::RuResult ,
pub Data: R ,
}
impl<R> Default for RuResult<R> where R: Serialize+Default {
fn default() -> Self {
Self{
result: ruresult::RuResult::new(),
Data: R::default(),
}
}
}
impl<R> GetSelfTrait<R> for RuResult<R> where R: Serialize+Clone {}
impl<R: Serialize> Deref for RuResult<R> {
type Target = ruresult::RuResult;
fn deref(&self) -> &Self::Target {
&self.result
}
}
impl<R: Serialize> DerefMut for RuResult<R> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.result
}
}