1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
use {Parcel, Error}; use std::io::prelude::*; impl<T: Parcel> Parcel for Option<T> { fn read(read: &mut Read) -> Result<Self, Error> { let is_some = bool::read(read)?; if is_some { let value = T::read(read)?; Ok(Some(value)) } else { Ok(None) } } fn write(&self, write: &mut Write) -> Result<(), Error> { self.is_some().write(write)?; if let Some(ref value) = *self { value.write(write)?; } Ok(()) } }