Struct borsh::schema::BorshSchemaContainer
source · pub struct BorshSchemaContainer { /* private fields */ }
Expand description
All schema information needed to deserialize a single type.
Implementations§
source§impl BorshSchemaContainer
impl BorshSchemaContainer
sourcepub fn max_serialized_size(&self) -> Result<usize, Error>
pub fn max_serialized_size(&self) -> Result<usize, Error>
Returns the largest possible size of a serialised object based solely on its type.
Even when if returned upper bound is correct, the theoretical value may be
much larger than any practical length. For example, maximum encoded
length of String
is 4 GiB while in practice one may encounter strings of
at most dozen of characters.
§Example
use borsh::schema::BorshSchemaContainer;
let schema = BorshSchemaContainer::for_type::<()>();
assert_eq!(Ok(0), schema.max_serialized_size());
let schema = BorshSchemaContainer::for_type::<usize>();
assert_eq!(Ok(8), schema.max_serialized_size());
// 4 bytes of length and u32::MAX for the longest possible string.
let schema = BorshSchemaContainer::for_type::<String>();
assert_eq!(Ok(4 + 4294967295), schema.max_serialized_size());
let schema = BorshSchemaContainer::for_type::<Vec<String>>();
assert_eq!(Err(borsh::schema::SchemaMaxSerializedSizeError::Overflow),
schema.max_serialized_size());
source§impl BorshSchemaContainer
impl BorshSchemaContainer
pub fn new( declaration: Declaration, definitions: BTreeMap<Declaration, Definition> ) -> Self
sourcepub fn for_type<T: BorshSchema + ?Sized>() -> Self
pub fn for_type<T: BorshSchema + ?Sized>() -> Self
generate BorshSchemaContainer for type T
pub fn declaration(&self) -> &Declaration
pub fn definitions(&self) -> impl Iterator<Item = (&Declaration, &Definition)>
pub fn get_definition<Q>(&self, declaration: &Q) -> Option<&Definition>
pub fn get_mut_definition<Q>( &mut self, declaration: &Q ) -> Option<&mut Definition>
pub fn insert_definition( &mut self, declaration: Declaration, definition: Definition ) -> Option<Definition>
pub fn remove_definition<Q>(&mut self, declaration: &Q) -> Option<Definition>
Trait Implementations§
source§impl BorshDeserialize for BorshSchemaContainer
impl BorshDeserialize for BorshSchemaContainer
fn deserialize_reader<R: Read>(reader: &mut R) -> IOResult<Self>
source§fn deserialize(buf: &mut &[u8]) -> Result<Self>
fn deserialize(buf: &mut &[u8]) -> Result<Self>
Deserializes this instance from a given slice of bytes.
Updates the buffer to point at the remaining bytes.
source§fn try_from_slice(v: &[u8]) -> Result<Self>
fn try_from_slice(v: &[u8]) -> Result<Self>
Deserialize this instance from a slice of bytes.
fn try_from_reader<R: Read>(reader: &mut R) -> Result<Self>
source§impl BorshSchema for BorshSchemaContainer
impl BorshSchema for BorshSchemaContainer
source§fn declaration() -> Declaration
fn declaration() -> Declaration
Get the name of the type without brackets.
source§fn add_definitions_recursively(
definitions: &mut BTreeMap<Declaration, Definition>
)
fn add_definitions_recursively( definitions: &mut BTreeMap<Declaration, Definition> )
Recursively, using DFS, add type definitions required for this type.
Type definition partially explains how to serialize/deserialize a type.
source§impl Clone for BorshSchemaContainer
impl Clone for BorshSchemaContainer
source§fn clone(&self) -> BorshSchemaContainer
fn clone(&self) -> BorshSchemaContainer
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for BorshSchemaContainer
impl Debug for BorshSchemaContainer
source§impl PartialEq for BorshSchemaContainer
impl PartialEq for BorshSchemaContainer
source§fn eq(&self, other: &BorshSchemaContainer) -> bool
fn eq(&self, other: &BorshSchemaContainer) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl Eq for BorshSchemaContainer
impl StructuralPartialEq for BorshSchemaContainer
Auto Trait Implementations§
impl Freeze for BorshSchemaContainer
impl RefUnwindSafe for BorshSchemaContainer
impl Send for BorshSchemaContainer
impl Sync for BorshSchemaContainer
impl Unpin for BorshSchemaContainer
impl UnwindSafe for BorshSchemaContainer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more