Documentation discrepancy
cailloumajor opened this issue · 0 comments
cailloumajor commented
Hello. First of all, thank you for those great libraries.
Unless I misunderstand, the statements of lines 135-140 in the extract below do not reflect how the code is doing.
msgpack-rust/rmp/src/encode/sint.rs
Lines 132 to 170 in f4ad0d0
/// Encodes and attempts to write an `i64` value into the given write using the most efficient | |
/// representation, returning the marker used. | |
/// | |
/// This function obeys the MessagePack specification, which requires that the serializer SHOULD use | |
/// the format which represents the data in the smallest number of bytes, with the exception of | |
/// sized/unsized types. | |
/// | |
/// Note, that the function will **always** use signed integer representation even if the value can | |
/// be more efficiently represented using unsigned integer encoding. | |
/// | |
/// The first byte becomes the marker and the others (if present, up to 9) will represent the data | |
/// itself. | |
/// | |
/// # Errors | |
/// | |
/// This function will return `ValueWriteError` on any I/O error occurred while writing either the | |
/// marker or the data. | |
pub fn write_sint<W: RmpWrite>(wr: &mut W, val: i64) -> Result<Marker, ValueWriteError<W::Error>> { | |
match val { | |
val if -32 <= val && val < 0 => { | |
write_nfix(wr, val as i8) | |
.and(Ok(Marker::FixNeg(val as i8))) | |
.map_err(ValueWriteError::InvalidMarkerWrite) | |
} | |
val if -128 <= val && val < -32 => write_i8(wr, val as i8).and(Ok(Marker::I8)), | |
val if -32768 <= val && val < -128 => write_i16(wr, val as i16).and(Ok(Marker::I16)), | |
val if -2147483648 <= val && val < -32768 => write_i32(wr, val as i32).and(Ok(Marker::I32)), | |
val if val < -2147483648 => write_i64(wr, val).and(Ok(Marker::I64)), | |
val if 0 <= val && val < 128 => { | |
write_pfix(wr, val as u8) | |
.and(Ok(Marker::FixPos(val as u8))) | |
.map_err(ValueWriteError::InvalidMarkerWrite) | |
} | |
val if val < 256 => write_u8(wr, val as u8).and(Ok(Marker::U8)), | |
val if val < 65536 => write_u16(wr, val as u16).and(Ok(Marker::U16)), | |
val if val < 4294967296 => write_u32(wr, val as u32).and(Ok(Marker::U32)), | |
val => write_u64(wr, val as u64).and(Ok(Marker::U64)), | |
} | |
} |