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§
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