tarantool 11.0.0

Tarantool rust bindings
Documentation
use crate::msgpack::encode::Context;
use crate::msgpack::encode::Decode;
use crate::msgpack::encode::DecodeError;
use crate::msgpack::encode::Encode;
use crate::msgpack::encode::EncodeError;
use smol_str::SmolStr;
use std::io::Write;

impl Encode for SmolStr {
    #[inline(always)]
    fn encode(&self, w: &mut impl Write, _context: &Context) -> Result<(), EncodeError> {
        rmp::encode::write_str(w, self).map_err(Into::into)
    }
}

impl<'de> Decode<'de> for SmolStr {
    #[inline]
    fn decode(r: &mut &'de [u8], _context: &Context) -> Result<Self, DecodeError> {
        let (res, bound) =
            rmp::decode::read_str_from_slice(*r).map_err(DecodeError::new::<Self>)?;
        *r = bound;
        Ok(Self::new(res))
    }
}