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_TraitInfo for each ink! trait definition.
  • Furthermore the ink! codegen implements the ink! trait definition for the TraitDefinitionRegistry with 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 TraitDefinitionRegistry through the aforementioned __ink_TraitInfo associated 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

The environment type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.