Skip to content

Commit d700e90

Browse files
committed
feat: implement ser::to_vec() for convenient serializing into a new Vec<u8>
such shortcut is usually included in serde format libraries gated by 'std' feature Signed-off-by: Voker57 <[email protected]>
1 parent 7c6ba83 commit d700e90

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

ciborium/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ pub use crate::de::from_reader_with_buffer;
106106
#[doc(inline)]
107107
pub use crate::ser::into_writer;
108108

109+
#[cfg(feature = "std")]
110+
#[doc(inline)]
111+
pub use crate::ser::into_vec;
112+
109113
#[doc(inline)]
110114
pub use crate::value::Value;
111115

ciborium/src/ser/mod.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,3 +497,15 @@ where
497497
let mut encoder = Serializer::from(writer);
498498
value.serialize(&mut encoder)
499499
}
500+
501+
#[cfg(feature = "std")]
502+
/// Serializes as CBOR into a new Vec<u8>
503+
#[inline]
504+
pub fn into_vec<T: ?Sized + ser::Serialize>(
505+
value: &T,
506+
) -> Result<Vec<u8>, Error<<Vec<u8> as ciborium_io::Write>::Error>> {
507+
let mut vector = vec![];
508+
let mut encoder = Serializer::from(&mut vector);
509+
value.serialize(&mut encoder)?;
510+
Ok(vector)
511+
}

ciborium/tests/codec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ fn codec<'de, T: Serialize + Clone, V: Debug + PartialEq + DeserializeOwned, F:
296296
assert_eq!(bytes, encoded);
297297

298298
let mut encoded = Vec::new();
299-
into_writer(&value, &mut encoded).unwrap();
299+
into_writer(&input, &mut encoded).unwrap();
300300
eprintln!("{:x?} == {:x?}", bytes, encoded);
301301
assert_eq!(bytes, encoded);
302302

0 commit comments

Comments
 (0)