Skip to content

Commit 0740680

Browse files
committed
Add serialize method that takes a supplied vec
1 parent 502223f commit 0740680

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/ser/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,14 @@ where
283283
value.serialize(&mut serializer)?;
284284
Ok(serializer.into_vec())
285285
}
286+
287+
/// Serialize the given `T` as a BSON byte vector into the provided writer.
288+
#[inline]
289+
pub fn into_vec<T>(value: &T, vec: Vec<u8>) -> Result<Vec<u8>>
290+
where
291+
T: Serialize,
292+
{
293+
let mut serializer = raw::Serializer::with_vec(vec);
294+
value.serialize(&mut serializer)?;
295+
Ok(serializer.into_vec())
296+
}

src/ser/raw/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,13 @@ impl SerializerHint {
5656

5757
impl Serializer {
5858
pub(crate) fn new() -> Self {
59+
Self::with_vec(Vec::new())
60+
}
61+
62+
pub(crate) fn with_vec(mut bytes: Vec<u8>) -> Self {
63+
bytes.clear();
5964
Self {
60-
bytes: Vec::new(),
65+
bytes,
6166
type_index: 0,
6267
hint: SerializerHint::None,
6368
}

0 commit comments

Comments
 (0)