pub enum SumStaticType<Type = (), const N: usize = 0>where
Type: Delimited,{
None,
Some(Type),
Many([Type; N]),
}Expand description
A statically shaped representation of field cardinality.
SumStaticType encodes the possible shapes of a field:
- absence (
None) - a single value (
Some) - multiple values (
Many)
§Context
In the virtual field system:
VirtualStaticFielddefines fields whose structure is fully determined at compile timeSumStaticTypeprovides a matching concrete representation
§Representation Model
The Many variant is backed by a fixed-size array ([Type; N]),
giving it array-like semantics:
- size is fixed at compile time
- no resizing or allocation
- capacity is encoded directly in the type
This makes SumStaticType suitable for:
- compile-time enforced layouts
- fixed schemas
- zero-overhead representations
§Variants
None: no valueSome(Type): exactly one valueMany([Type; N]): fixed-size collection with array semantics
§Type Parameters
Type: element typeN: compile-time capacity
§Key Property
This is a fully determined representation using array semantics, where both cardinality and capacity are encoded directly in the type.
§Default Generics
Type = (): no meaningful value (unit type)N = 0: zero-sized array,Manyholds no elements
Together, this yields a no-op, zero-sized representation, useful as a placeholder in generic contexts.
Variants§
Trait Implementations§
Source§impl<Type, const N: usize> Clone for SumStaticType<Type, N>
impl<Type, const N: usize> Clone for SumStaticType<Type, N>
Source§fn clone(&self) -> SumStaticType<Type, N>
fn clone(&self) -> SumStaticType<Type, N>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<Type, const N: usize> Debug for SumStaticType<Type, N>
impl<Type, const N: usize> Debug for SumStaticType<Type, N>
Source§impl<Type, const N: usize> Decode for SumStaticType<Type, N>
impl<Type, const N: usize> Decode for SumStaticType<Type, N>
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
§fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
fn skip<I>(input: &mut I) -> Result<(), Error>where
I: Input,
§fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Source§impl<Type, const N: usize> Default for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> Default for SumStaticType<Type, N>where
Type: Delimited,
Source§fn default() -> SumStaticType<Type, N>
fn default() -> SumStaticType<Type, N>
Source§impl<Type, const N: usize> Encode for SumStaticType<Type, N>
impl<Type, const N: usize> Encode for SumStaticType<Type, N>
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Source§impl<Type, const N: usize> FromTag<[Type; N], ManyTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> FromTag<[Type; N], ManyTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> FromTag<(), NoneTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> FromTag<(), NoneTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> FromTag<Type, SomeTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> FromTag<Type, SomeTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> MaxEncodedLen for SumStaticType<Type, N>
impl<Type, const N: usize> MaxEncodedLen for SumStaticType<Type, N>
Source§fn max_encoded_len() -> usize
fn max_encoded_len() -> usize
Source§impl<Type, const N: usize> PartialEq for SumStaticType<Type, N>
impl<Type, const N: usize> PartialEq for SumStaticType<Type, N>
Source§impl<Type, const N: usize> TryIntoTag<[Type; N], ManyTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> TryIntoTag<[Type; N], ManyTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> TryIntoTag<(), NoneTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> TryIntoTag<(), NoneTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> TryIntoTag<Type, SomeTag> for SumStaticType<Type, N>where
Type: Delimited,
impl<Type, const N: usize> TryIntoTag<Type, SomeTag> for SumStaticType<Type, N>where
Type: Delimited,
Source§impl<Type, const N: usize> TypeInfo for SumStaticType<Type, N>
impl<Type, const N: usize> TypeInfo for SumStaticType<Type, N>
impl<Type, const N: usize> DecodeWithMemTracking for SumStaticType<Type, N>
impl<Type, const N: usize> EncodeLike for SumStaticType<Type, N>
impl<Type, const N: usize> Eq for SumStaticType<Type, N>
impl<Type, const N: usize> StructuralPartialEq for SumStaticType<Type, N>where
Type: Delimited,
Auto Trait Implementations§
impl<Type, const N: usize> Freeze for SumStaticType<Type, N>where
Type: Freeze,
impl<Type, const N: usize> RefUnwindSafe for SumStaticType<Type, N>where
Type: RefUnwindSafe,
impl<Type, const N: usize> Send for SumStaticType<Type, N>where
Type: Send,
impl<Type, const N: usize> Sync for SumStaticType<Type, N>where
Type: Sync,
impl<Type, const N: usize> Unpin for SumStaticType<Type, N>where
Type: Unpin,
impl<Type, const N: usize> UnwindSafe for SumStaticType<Type, N>where
Type: UnwindSafe,
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
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Clear for T
impl<T> Clear for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> DecodeAll for Twhere
T: Decode,
impl<T> DecodeAll for Twhere
T: Decode,
§fn decode_all(input: &mut &[u8]) -> Result<T, Error>
fn decode_all(input: &mut &[u8]) -> Result<T, Error>
Self and consume all of the given input data. Read more§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
§impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Hashable for Twhere
T: Codec,
impl<T> Hashable for Twhere
T: Codec,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
impl<T, U, Tag> IntoTag<U, Tag> for Twhere
U: FromTag<T, Tag>,
Tag: DiscriminantTag,
§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> KeyedVec for Twhere
T: Codec,
impl<T> KeyedVec for Twhere
T: Codec,
Source§impl<T, Time> Logging<Time> for Twhere
Time: Time,
impl<T, Time> Logging<Time> for Twhere
Time: Time,
Source§const FALLBACK_TARGET: &'static str = const FALLBACK_TARGET: &'_ str = "routine";
const FALLBACK_TARGET: &'static str = const FALLBACK_TARGET: &'_ str = "routine";
Default logging target if none is provided.
Most routines, especially offchain workers or background tasks, use this target for simplicity.
It allows a consistent place to look for routine logs without requiring every call to specify a target.
Note: This target is only a conveninence and may be somewhat vague. To ensure errors can still be traced accurately, the logged messages should include additional metadata (e.g., module name, error index, or contextual info) so that the source of the error can be identified even if the target is generic.
Source§type Logger = DispatchError
type Logger = DispatchError
The type taken and returned for logging.
We simply return the same [DispatchError] that was logged,
so logging does not change control flow or error propagation.
DispatchError is used because in Substrate it encompasses all
runtime errors - including module errors, token errors, arithmetic
issues, and transactional boundaries - making it the universal
substrate-side error representation.
Source§type Level = LogLevel
type Level = LogLevel
The log level type.
We use the LogLevel enum to standardize severity levels
(Info, Warn, Error, Debug) across all routine logs.
Source§fn log(
level: <T as Logging<Time>>::Level,
err: &<T as Logging<Time>>::Logger,
timestamp: Time,
target: Option<&str>,
fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>,
) -> <T as Logging<Time>>::Logger
fn log( level: <T as Logging<Time>>::Level, err: &<T as Logging<Time>>::Logger, timestamp: Time, target: Option<&str>, fmt: Option<fn(Time, &<T as Logging<Time>>::Level, &str, &str) -> String>, ) -> <T as Logging<Time>>::Logger
Source§fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<LogFormatter<Timestamp, Self::Level>>,
) -> Self::Loggerwhere
Self: Sized,
fn info(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<LogFormatter<Timestamp, Self::Level>>,
) -> Self::Loggerwhere
Self: Sized,
Source§fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<LogFormatter<Timestamp, Self::Level>>,
) -> Self::Loggerwhere
Self: Sized,
fn warn(
err: &Self::Logger,
timestamp: Timestamp,
target: Option<&str>,
fmt: Option<LogFormatter<Timestamp, Self::Level>>,
) -> Self::Loggerwhere
Self: Sized,
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T. Read more§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T.