MCPcopy Create free account
hub / github.com/3Hren/msgpack-rust / write_value

Function write_value

src/encode.rs:858–900  ·  view source on GitHub ↗

Encodes and attempts to write the most efficient representation of the given Value. # Note All instances of `ErrorKind::Interrupted` are handled by this function and the underlying operation is retried. TODO: Docs. Examples.

(wr: &mut W, val: &Value)

Source from the content-addressed store, hash-verified

856/// operation is retried.
857// TODO: Docs. Examples.
858pub fn write_value<W>(wr: &mut W, val: &Value) -> Result<(), Error>
859 where W: Write
860{
861 match val {
862 &Value::Nil => try!(write_nil(wr)),
863 &Value::Boolean(val) => try!(write_bool(wr, val)),
864 // TODO: Replace with generic write_int(...).
865 &Value::Integer(Integer::U64(val)) => {
866 try!(write_uint(wr, val));
867 }
868 &Value::Integer(Integer::I64(val)) => {
869 try!(write_sint(wr, val));
870 }
871 // TODO: Replace with generic write_float(...).
872 &Value::Float(Float::F32(val)) => try!(write_f32(wr, val)),
873 &Value::Float(Float::F64(val)) => try!(write_f64(wr, val)),
874 &Value::String(ref val) => {
875 try!(write_str(wr, &val));
876 }
877 &Value::Binary(ref val) => {
878 try!(write_bin(wr, &val));
879 }
880 &Value::Array(ref val) => {
881 try!(write_array_len(wr, val.len() as u32));
882 for item in val {
883 try!(write_value(wr, item));
884 }
885 }
886 &Value::Map(ref val) => {
887 try!(write_map_len(wr, val.len() as u32));
888 for &(ref key, ref val) in val {
889 try!(write_value(wr, key));
890 try!(write_value(wr, val));
891 }
892 }
893 &Value::Ext(ty, ref data) => {
894 try!(write_ext_meta(wr, data.len() as u32, ty));
895 try!(wr.write_all(data).map_err(|err| ValueWriteError::InvalidDataWrite(WriteError(err))));
896 }
897 }
898
899 Ok(())
900}
901
902} // mod value
903

Callers 1

pack_nilFunction · 0.85

Calls 12

write_nilFunction · 0.85
write_boolFunction · 0.85
write_uintFunction · 0.85
write_sintFunction · 0.85
write_f32Function · 0.85
write_f64Function · 0.85
write_strFunction · 0.85
write_binFunction · 0.85
write_array_lenFunction · 0.85
write_map_lenFunction · 0.85
write_ext_metaFunction · 0.85
WriteErrorClass · 0.85

Tested by 1

pack_nilFunction · 0.68