pub struct Ignore<T = ()>(pub PhantomData<T>);Expand description
No-op generic marker type used in place of () when a generic
parameter needs to be carried.
While () is commonly used as a default no-op type in Rust,
it cannot expose or propagate generic parameters. Ignore
provides a zero-sized alternative that preserves generic context
without introducing behavior.
§Purpose
- Acts as a no-op / default implementor
- Carries a generic type parameter
T - Enables trait implementations that require associated types derived from a generic input
§Usage
Used in generic abstractions where:
- a placeholder type is required,
- behavior is intentionally absent,
- but type information must still flow through the system.
§Example
trait ProvidesType {
type Item;
}
// Cannot use `()` here because it cannot carry `T`
impl<T> ProvidesType for Ignore<T> {
type Item = T;
}This allows a no-op type to still propagate generic information.
Tuple Fields§
§0: PhantomData<T>Trait Implementations§
Source§impl PositionIndex for Ignore
Trivial implementation for marker type Ignore, representing a
single, non-variant position.
impl PositionIndex for Ignore
Trivial implementation for marker type Ignore, representing a
single, non-variant position.
Source§impl VariantCount for Ignore
impl VariantCount for Ignore
Source§const VARIANT_COUNT: u32 = 1u32
const VARIANT_COUNT: u32 = 1u32
Ignore defines a single semantic variant.
Source§impl<T> XpLockListener for Ignore<T>
impl<T> XpLockListener for Ignore<T>
Source§fn lock_updated(
_key: &Key<Self::Via>,
_reason: &LockReason<Self::Via>,
_total_points: Points<Self::Via>,
)
fn lock_updated( _key: &Key<Self::Via>, _reason: &LockReason<Self::Via>, _total_points: Points<Self::Via>, )
Source§fn lock_burned(_key: &Key<Self::Via>, _reason: &LockReason<Self::Via>)
fn lock_burned(_key: &Key<Self::Via>, _reason: &LockReason<Self::Via>)
Source§fn lock_slashed(
_key: &Key<Self::Via>,
_reason: &LockReason<Self::Via>,
_slashed_points: Points<Self::Via>,
)
fn lock_slashed( _key: &Key<Self::Via>, _reason: &LockReason<Self::Via>, _slashed_points: Points<Self::Via>, )
Source§impl<T> XpMutateListener for Ignore<T>
impl<T> XpMutateListener for Ignore<T>
Source§fn xp_created(_key: &Key<Self::Via>, _owner: &Owner<Self::Via>)
fn xp_created(_key: &Key<Self::Via>, _owner: &Owner<Self::Via>)
Source§fn xp_earned(_key: &Key<Self::Via>, _earned_points: Points<Self::Via>)
fn xp_earned(_key: &Key<Self::Via>, _earned_points: Points<Self::Via>)
Source§impl<T> XpOwnerListener for Ignore<T>where
Self: XpSystemExtensions<Via = T>,
T: XpOwner,
impl<T> XpOwnerListener for Ignore<T>where
Self: XpSystemExtensions<Via = T>,
T: XpOwner,
Source§impl<T> XpReapListener for Ignore<T>
impl<T> XpReapListener for Ignore<T>
Source§impl<T> XpReserveListener for Ignore<T>
impl<T> XpReserveListener for Ignore<T>
Source§fn reserve_updated(
_key: &Key<Self::Via>,
_reason: &ReserveReason<Self::Via>,
_total_points: Points<Self::Via>,
)
fn reserve_updated( _key: &Key<Self::Via>, _reason: &ReserveReason<Self::Via>, _total_points: Points<Self::Via>, )
Source§fn reserve_slashed(
_key: &Key<Self::Via>,
_reason: &ReserveReason<Self::Via>,
_slashed_points: Points<Self::Via>,
)
fn reserve_slashed( _key: &Key<Self::Via>, _reason: &ReserveReason<Self::Via>, _slashed_points: Points<Self::Via>, )
Auto Trait Implementations§
impl<T> Freeze for Ignore<T>
impl<T> RefUnwindSafe for Ignore<T>where
T: RefUnwindSafe,
impl<T> Send for Ignore<T>where
T: Send,
impl<T> Sync for Ignore<T>where
T: Sync,
impl<T> Unpin for Ignore<T>where
T: Unpin,
impl<T> UnwindSafe for Ignore<T>where
T: 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> 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
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.