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

Function write_value_ref

src/encode/value_ref.rs:85–132  ·  view source on GitHub ↗

Encodes and attempts to write the given non-owning ValueRef into the Write. # Errors This function returns Error with an underlying I/O error if unable to properly write entire value. Interruption errors are handled internally by silent operation restarting. # Examples ``` use rmp::ValueRef; use rmp::encode::value_ref::write_value_ref; let mut buf = Vec::new(); let val = ValueRef::String("le m

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

Source from the content-addressed store, hash-verified

83/// assert_eq!(vec![0xaa, 0x6c, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65], buf);
84/// ```
85pub fn write_value_ref<W>(wr: &mut W, val: &ValueRef) -> Result<(), Error>
86 where W: Write
87{
88 match val {
89 &ValueRef::Nil => try!(write_nil(wr)),
90 &ValueRef::Boolean(val) => try!(write_bool(wr, val)),
91 &ValueRef::Integer(Integer::U64(val)) => {
92 try!(write_uint(wr, val));
93 }
94 &ValueRef::Integer(Integer::I64(val)) => {
95 try!(write_sint(wr, val));
96 }
97 // TODO: Replace with generic write_float(...).
98 &ValueRef::Float(Float::F32(val)) => try!(write_f32(wr, val)),
99 &ValueRef::Float(Float::F64(val)) => try!(write_f64(wr, val)),
100 &ValueRef::String(val) => {
101 try!(write_str(wr, val));
102 }
103 &ValueRef::Binary(val) => {
104 try!(write_bin(wr, val));
105 }
106 &ValueRef::Array(ref val) => {
107 let len = val.len() as u32;
108
109 try!(write_array_len(wr, len));
110
111 for item in val {
112 try!(write_value_ref(wr, item));
113 }
114 }
115 &ValueRef::Map(ref val) => {
116 let len = val.len() as u32;
117
118 try!(write_map_len(wr, len));
119
120 for &(ref key, ref val) in val {
121 try!(write_value_ref(wr, key));
122 try!(write_value_ref(wr, val));
123 }
124 }
125 &ValueRef::Ext(ty, data) => {
126 try!(write_ext_meta(wr, data.len() as u32, ty));
127 try!(wr.write_all(data).map_err(|err| ValueWriteError::InvalidDataWrite(WriteError(err))));
128 }
129 }
130
131 Ok(())
132}
133
134#[cfg(test)]
135mod test {

Callers 6

pack_nilFunction · 0.85
pass_pack_trueFunction · 0.85
pass_pack_uint_u16Function · 0.85
pass_pack_i64Function · 0.85
check_packed_eqFunction · 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 5

pack_nilFunction · 0.68
pass_pack_trueFunction · 0.68
pass_pack_uint_u16Function · 0.68
pass_pack_i64Function · 0.68