Function rmp::decode::read_str

source ·
pub fn read_str<'r, R>(
    rd: &mut R,
    buf: &'r mut [u8],
) -> Result<&'r str, DecodeStringError<'r, R::Error>>
where R: RmpRead,
Expand description

Attempts to read a string data from the given reader and copy it to the buffer provided.

On success returns a borrowed string type, allowing to view the copied bytes as properly utf-8 string. According to the spec, the string’s data must to be encoded using utf-8.

§Errors

Returns Err in the following cases:

  • if any IO error (including unexpected EOF) occurs, while reading an rd, except the EINTR, which is handled internally.
  • if the out buffer size is not large enough to keep all the data copied.
  • if the data is not utf-8, with a description as to why the provided data is not utf-8 and with a size of bytes actually copied to be able to get them from out.

§Examples

use rmp::decode::read_str;

let buf = [0xaa, 0x6c, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65];
let mut out = [0u8; 16];

assert_eq!("le message", read_str(&mut &buf[..], &mut &mut out[..]).unwrap());

§Unstable

This function is unstable, because it needs review.