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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
/// Tries to encode items to the given buffer. /// /// This macro is expanded to the following expression. /// /// ```ignore /// if !$encoder.is_idle() { /// $offset += track!($encoder.encode(&mut $buf[$offset..], $eos))?; /// if !$encoder.is_idle() { /// return Ok($offset); /// } /// } /// ``` #[macro_export] macro_rules! bytecodec_try_encode { ($encoder:expr, $offset:expr, $buf:expr, $eos:expr) => { if !$encoder.is_idle() { $offset += track!($encoder.encode(&mut $buf[$offset..], $eos))?; if !$encoder.is_idle() { return Ok($offset); } } } } /// Tries to decode an item from the given buffer. /// /// Note that this macro assumes `$decoder` is an instance of `Buffered<_>`. /// /// This macro is expanded to the following expression. /// /// ```ignore /// if !$decoder.has_item() { /// $offset += track!($decoder.decode(&$buf[$offset..], $eos))?.0; /// if let Some(item) = $decoder.get_item() { /// Some(item) /// } else { /// return Ok(($offset, None)); /// } /// } else { /// None /// } /// ``` #[macro_export] macro_rules! bytecodec_try_decode { ($decoder:expr, $offset:expr, $buf:expr, $eos:expr) => { if !$decoder.has_item() { $offset += track!($decoder.decode(&$buf[$offset..], $eos))?.0; if let Some(item) = $decoder.get_item() { Some(item) } else { return Ok(($offset, None)); } } else { None } } }