scale_info

Struct Registry

source
pub struct Registry { /* private fields */ }
Expand description

The registry for space-efficient storage of type identifiers and definitions.

The registry consists of a cache for type identifiers and definitions.

When adding a type to the registry, all of its sub-types are registered recursively as well. A type is considered a sub-type of another type if it is used by its identifier or structure.

§Note

A type can be a sub-type of itself. In this case the registry has a builtin mechanism to stop recursion and avoid going into an infinite loop.

Implementations§

source§

impl Registry

source

pub fn new() -> Self

Creates a new empty registry.

source

pub fn register_type(&mut self, ty: &MetaType) -> UntrackedSymbol<TypeId>

Registers the given type into the registry and returns its associated type ID symbol.

§Note

Due to safety requirements the returns type ID symbol cannot be used later to resolve back to the associated type definition. However, since this facility is going to be used for serialization purposes this functionality isn’t needed anyway.

source

pub fn register_types<I>(&mut self, iter: I) -> Vec<UntrackedSymbol<TypeId>>
where I: IntoIterator<Item = MetaType>,

Calls register_type for each MetaType in the given iter.

source

pub fn map_into_portable<I, T>(&mut self, iter: I) -> Vec<T::Output>
where I: IntoIterator<Item = T>, T: IntoPortable,

Converts an iterator into a Vec of the equivalent portable representations.

source

pub fn types( &self, ) -> impl Iterator<Item = (&UntrackedSymbol<TypeId>, &Type<PortableForm>)>

Returns an iterator over the types with their keys

Trait Implementations§

source§

impl Debug for Registry

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Registry

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<Registry> for PortableRegistry

source§

fn from(registry: Registry) -> Self

Converts to this type from the input type.
source§

impl PartialEq for Registry

source§

fn eq(&self, other: &Registry) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Registry

source§

impl StructuralPartialEq for Registry

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> JsonSchemaMaybe for T