pub trait Categorize<X: CustomValueKind> {
    // Required method
    fn value_kind() -> ValueKind<X>;
}
Expand description

The Categorize trait marks a rust type as having a fixed value kind for SBOR encoding/decoding.

Most rust types will have a fixed value kind in the SBOR model, and so can implement Categorize, but some (such as the SBOR Value) do not.

Implementing Categorize is required for being able to directly Encode / Decode any collection containing the rust type - because the value kind is lifted/deduplicated in the encoded payload.

If a type cannot implement Categorize, as a work-around, you can put it into a collection by (eg) wrapping it in a tuple of size 1.

Required Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, X: CustomValueKind, T: ?Sized + Categorize<X>> Categorize<X> for &T

source§

impl<X: CustomValueKind> Categorize<X> for bool

source§

impl<X: CustomValueKind> Categorize<X> for i8

source§

impl<X: CustomValueKind> Categorize<X> for i16

source§

impl<X: CustomValueKind> Categorize<X> for i32

source§

impl<X: CustomValueKind> Categorize<X> for i64

source§

impl<X: CustomValueKind> Categorize<X> for i128

source§

impl<X: CustomValueKind> Categorize<X> for isize

source§

impl<X: CustomValueKind> Categorize<X> for str

source§

impl<X: CustomValueKind> Categorize<X> for u8

source§

impl<X: CustomValueKind> Categorize<X> for u16

source§

impl<X: CustomValueKind> Categorize<X> for u32

source§

impl<X: CustomValueKind> Categorize<X> for u64

source§

impl<X: CustomValueKind> Categorize<X> for u128

source§

impl<X: CustomValueKind> Categorize<X> for ()

source§

impl<X: CustomValueKind> Categorize<X> for usize

source§

impl<X: CustomValueKind, A> Categorize<X> for (A,)

source§

impl<X: CustomValueKind, A, B> Categorize<X> for (A, B)

source§

impl<X: CustomValueKind, A, B, C> Categorize<X> for (A, B, C)

source§

impl<X: CustomValueKind, A, B, C, D> Categorize<X> for (A, B, C, D)

source§

impl<X: CustomValueKind, A, B, C, D, E> Categorize<X> for (A, B, C, D, E)

source§

impl<X: CustomValueKind, A, B, C, D, E, F> Categorize<X> for (A, B, C, D, E, F)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G> Categorize<X> for (A, B, C, D, E, F, G)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H> Categorize<X> for (A, B, C, D, E, F, G, H)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I> Categorize<X> for (A, B, C, D, E, F, G, H, I)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J> Categorize<X> for (A, B, C, D, E, F, G, H, I, J)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)

source§

impl<X: CustomValueKind, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> Categorize<X> for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)

source§

impl<X: CustomValueKind, T> Categorize<X> for [T]

source§

impl<X: CustomValueKind, T, const N: usize> Categorize<X> for [T; N]

Implementors§

source§

impl<'a, X: CustomValueKind, B: ?Sized + 'a + ToOwned + Categorize<X>> Categorize<X> for Cow<'a, B>

source§

impl<C: CustomTypeKind<L>, L: SchemaTypeLink, X: CustomValueKind> Categorize<X> for TypeKind<C, L>

source§

impl<E: CustomTypeValidation, X: CustomValueKind> Categorize<X> for TypeValidation<E>

source§

impl<S: CustomSchema, X: CustomValueKind> Categorize<X> for VersionedSchema<S>

source§

impl<S: CustomSchema, X: CustomValueKind> Categorize<X> for SchemaV1<S>

source§

impl<T, X: CustomValueKind> Categorize<X> for NumericValidation<T>

source§

impl<X: CustomValueKind> Categorize<X> for NoCustomTypeKind

source§

impl<X: CustomValueKind> Categorize<X> for NoCustomTypeValidation

source§

impl<X: CustomValueKind> Categorize<X> for DecodeError

source§

impl<X: CustomValueKind> Categorize<X> for EncodeError

source§

impl<X: CustomValueKind> Categorize<X> for SchemaValidationError

source§

impl<X: CustomValueKind> Categorize<X> for ChildNames

source§

impl<X: CustomValueKind> Categorize<X> for LocalTypeId

source§

impl<X: CustomValueKind> Categorize<X> for RustTypeId

source§

impl<X: CustomValueKind> Categorize<X> for String

source§

impl<X: CustomValueKind> Categorize<X> for NovelTypeMetadata

source§

impl<X: CustomValueKind> Categorize<X> for TypeMetadata

source§

impl<X: CustomValueKind> Categorize<X> for LengthValidation

source§

impl<X: CustomValueKind> Categorize<X> for WellKnownTypeId

source§

impl<X: CustomValueKind, K, V> Categorize<X> for BTreeMap<K, V>

source§

impl<X: CustomValueKind, K, V> Categorize<X> for HashMap<K, V>

source§

impl<X: CustomValueKind, K, V> Categorize<X> for IndexMap<K, V>

source§

impl<X: CustomValueKind, T> Categorize<X> for Option<T>

source§

impl<X: CustomValueKind, T> Categorize<X> for BTreeSet<T>

source§

impl<X: CustomValueKind, T> Categorize<X> for Vec<T>

source§

impl<X: CustomValueKind, T> Categorize<X> for HashSet<T>

source§

impl<X: CustomValueKind, T> Categorize<X> for IndexSet<T>

source§

impl<X: CustomValueKind, T, E> Categorize<X> for Result<T, E>

source§

impl<X: CustomValueKind, T: Categorize<X>> Categorize<X> for Box<T>

source§

impl<X: CustomValueKind, T: Categorize<X>> Categorize<X> for Rc<T>

source§

impl<X: CustomValueKind, T: Categorize<X>> Categorize<X> for RefCell<T>

source§

impl<X: CustomValueKind, Y: CustomValue<X>> Categorize<X> for EnumVariantValue<X, Y>

source§

impl<X: CustomValueKind, const DISCRIMINATOR: u8, T: SborTuple<X>> Categorize<X> for FixedEnumVariant<DISCRIMINATOR, T>