pub struct TraitDefinitionRegistry<E> { /* private fields */ }Expand description
Type that is guaranteed by ink! to implement all ink! trait definitions.
This guarantee is used by ink! itself and can be used by ink! smart contract authors to query static information about known ink! trait definitions.
§Codegen
- The
#[ink::trait_definition]procedural macro generates an associated type called__ink_TraitInfofor each ink! trait definition. - Furthermore the ink! codegen implements the ink! trait definition for the
TraitDefinitionRegistrywith stub implementations for all methods that guarantee that they are never called. - For every implemented ink! trait definition an ink! trait info object type is
generated that is linked to the global
TraitDefinitionRegistrythrough the aforementioned__ink_TraitInfoassociated type. - This trait info object type itself implements various traits each providing useful static reflection information to the rest of the codegen about the ink! trait definition.
§Usage
use ink_env::DefaultEnvironment;
#[ink::trait_definition]
pub trait TraitDefinition {
#[ink(message)]
fn message(&self);
}
/// Access the generated ink! trait info object type like this:
type TraitInfo =
<TraitDefinitionRegistry<DefaultEnvironment> as TraitDefinition>::__ink_TraitInfo;Trait Implementations§
Source§impl<E> ContractEnv for TraitDefinitionRegistry<E>where
E: Environment,
impl<E> ContractEnv for TraitDefinitionRegistry<E>where
E: Environment,
Auto Trait Implementations§
impl<E> Freeze for TraitDefinitionRegistry<E>
impl<E> RefUnwindSafe for TraitDefinitionRegistry<E>
impl<E> Send for TraitDefinitionRegistry<E>
impl<E> Sync for TraitDefinitionRegistry<E>
impl<E> Unpin for TraitDefinitionRegistry<E>
impl<E> UnwindSafe for TraitDefinitionRegistry<E>
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
§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>
Converts
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>
Converts
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 more§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§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>,
Consume self to return an equivalent value of
T. Read more§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
The counterpart to
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
Consume self to return an equivalent value of
T.