pub unsafe fn to_writer<W, T>(
writer: &mut W,
ctxt: Context,
value: &T
) -> Result<Written>
Expand description
Serialize T
to the given writer
.
§Examples
use zvariant::{serialized::{Context, Data}, to_writer, LE};
let ctxt = Context::new_dbus(LE, 0);
let mut cursor = std::io::Cursor::new(vec![]);
// SAFETY: No FDs are being serialized here so its completely safe.
unsafe { to_writer(&mut cursor, ctxt, &42u32) }.unwrap();
let encoded = Data::new(cursor.get_ref(), ctxt);
let value: u32 = encoded.deserialize().unwrap().0;
assert_eq!(value, 42);
§Safety
On Unix systems, the returned Written
instance can contain file descriptors and therefore
the caller is responsible for not dropping the returned Written
instance before the
writer
. Otherwise, the file descriptors in the Written
instance will be closed while
serialized data will still refer to them. Hence why this function is marked unsafe.
On non-Unix systems, the returned Written
instance will not contain any file descriptors and
hence is safe to drop.