use error;
use identifiable::Identifiable;
use sized::MtProtoSized;
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
pub struct Boxed<T> {
id: i32,
inner: T,
}
impl<T: Identifiable> Boxed<T> {
pub fn new(inner: T) -> Boxed<T> {
Boxed {
id: inner.get_id(),
inner: inner,
}
}
pub fn into_inner(self) -> T {
self.inner
}
}
impl<T: MtProtoSized> MtProtoSized for Boxed<T> {
fn get_size_hint(&self) -> error::Result<usize> {
let id_size_hint = self.id.get_size_hint()?;
let inner_size_hint = self.inner.get_size_hint()?;
Ok(id_size_hint + inner_size_hint)
}
}