From fb790a728162f08e4bc990da096e3ccf62732447 Mon Sep 17 00:00:00 2001 From: Vlad Frolov Date: Mon, 12 Apr 2021 17:41:17 +0300 Subject: [PATCH] docs: Added an example of direct BorshSerialize::serialize usage with vector and slice buffers --- borsh/src/ser/mod.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/borsh/src/ser/mod.rs b/borsh/src/ser/mod.rs index eb35486da..fcc17e850 100644 --- a/borsh/src/ser/mod.rs +++ b/borsh/src/ser/mod.rs @@ -16,6 +16,27 @@ use std::{rc::Rc, sync::Arc}; const DEFAULT_SERIALIZER_CAPACITY: usize = 1024; /// A data-structure that can be serialized into binary format by NBOR. +/// +/// ``` +/// use borsh::BorshSerialize; +/// +/// #[derive(BorshSerialize)] +/// struct MyBorshSerializableStruct { +/// value: String, +/// } +/// +/// let x = MyBorshSerializableStruct { value: "hello".to_owned() }; +/// let mut buffer: Vec = Vec::new(); +/// x.serialize(&mut buffer).unwrap(); +/// let single_serialized_buffer_len = buffer.len(); +/// +/// x.serialize(&mut buffer).unwrap(); +/// assert_eq!(buffer.len(), single_serialized_buffer_len * 2); +/// +/// let mut buffer: Vec = vec![0; 1024 + single_serialized_buffer_len]; +/// let mut buffer_slice_enough_for_the_data = &mut buffer[1024..1024 + single_serialized_buffer_len]; +/// x.serialize(&mut buffer_slice_enough_for_the_data).unwrap(); +/// ``` pub trait BorshSerialize { fn serialize(&self, writer: &mut W) -> Result<()>;