AccountComponent

Struct AccountComponent 

Source
pub struct AccountComponent { /* private fields */ }
Expand description

An AccountComponent defines a Library of code and the initial value and types of the StorageSlots it accesses.

One or more components can be used to built AccountCode and AccountStorage.

Each component is independent of other components and can only access its own storage slots. Each component defines its own storage layout starting at index 0 up to the length of the storage slots vector.

Components define the AccountTypes they support, meaning whether the component can be used to instantiate an account of that type. For example, a component implementing a fungible faucet would only specify support for AccountType::FungibleFaucet. Using it to instantiate a regular account would fail. By default, the set of supported types is empty, so each component is forced to explicitly define what it supports.

Implementations§

Source§

impl AccountComponent

Source

pub fn new( code: Library, storage_slots: Vec<StorageSlot>, ) -> Result<AccountComponent, AccountError>

Returns a new AccountComponent constructed from the provided library and storage_slots.

All procedures exported from the provided code will become members of the account’s public interface when added to an AccountCode.

§Errors

The following list of errors is exhaustive and can be relied upon for expecting the call to this function. It is recommended that custom components ensure these conditions by design or in their fallible constructors.

Returns an error if:

Source

pub fn compile( source_code: impl Parse, assembler: Assembler, storage_slots: Vec<StorageSlot>, ) -> Result<AccountComponent, AccountError>

Returns a new AccountComponent whose library is compiled from the provided source_code using the specified assembler and with the given storage_slots.

All procedures exported from the provided code will become members of the account’s public interface when added to an AccountCode.

§Errors

Returns an error if:

  • the compilation of the provided source code fails.
  • The number of storage slots exceeds 255.
Source

pub fn from_template( template: &AccountComponentTemplate, init_storage_data: &InitStorageData, ) -> Result<AccountComponent, AccountError>

Instantiates an AccountComponent from the AccountComponentTemplate.

The template’s component metadata might contain placeholders, which can be replaced by mapping storage placeholders to values through the init_storage_data parameter.

§Errors
  • If any of the component’s storage entries cannot be transformed into a valid storage slot. This could be because the metadata is invalid, or storage values were not provided (or they are not of a valid type)
Source

pub fn from_package_with_init_data( package: &Package, init_storage_data: &InitStorageData, ) -> Result<AccountComponent, AccountError>

Creates an AccountComponent from a Package using InitStorageData.

This method provides type safety by leveraging the component’s metadata to validate storage initialization data. The package must contain explicit account component metadata.

§Arguments
  • package - The package containing the library and account component metadata
  • init_storage_data - The initialization data for storage slots
§Errors

Returns an error if:

  • The package does not contain account component metadata
  • The package cannot be converted to an AccountComponentTemplate
  • The storage initialization fails due to invalid or missing data
  • The component creation fails
Source

pub fn storage_size(&self) -> u8

Returns the number of storage slots accessible from this component.

Source

pub fn library(&self) -> &Library

Returns a reference to the underlying Library of this component.

Source

pub fn mast_forest(&self) -> &MastForest

Returns a reference to the underlying MastForest of this component.

Source

pub fn storage_slots(&self) -> &[StorageSlot]

Returns a slice of the underlying StorageSlots of this component.

Source

pub fn supported_types(&self) -> &BTreeSet<AccountType>

Returns a reference to the supported AccountTypes.

Source

pub fn supports_type(&self, account_type: AccountType) -> bool

Returns true if this component supports the given account_type, false otherwise.

Source

pub fn get_procedures(&self) -> Vec<(Word, bool)>

Returns a vector of tuples (digest, is_auth) for all procedures in this component.

Source

pub fn get_procedure_root_by_name( &self, proc_name: impl TryInto<QualifiedProcedureName>, ) -> Option<Word>

Returns the digest of the procedure with the specified name, or None if it was not found in this component’s library or its library path is malformed.

Source

pub fn with_supported_type( self, supported_type: AccountType, ) -> AccountComponent

Adds supported_type to the set of AccountTypes supported by this component.

This function has the semantics of BTreeSet::insert, i.e. adding a type twice is fine and it can be called multiple times with different account types.

Source

pub fn with_supported_types( self, supported_types: BTreeSet<AccountType>, ) -> AccountComponent

Overwrites any previously set supported types with the given set.

This can be used to reset the supported types of a component to a chosen set, which may be useful after cloning an existing component.

Source

pub fn with_supports_all_types(self) -> AccountComponent

Sets the AccountTypes supported by this component to all account types.

Trait Implementations§

Source§

impl Clone for AccountComponent

Source§

fn clone(&self) -> AccountComponent

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AccountComponent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl From<AccountComponent> for Library

Source§

fn from(component: AccountComponent) -> Library

Converts to this type from the input type.
Source§

impl From<AuthEcdsaK256Keccak> for AccountComponent

Source§

fn from(ecdsa: AuthEcdsaK256Keccak) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<AuthEcdsaK256KeccakAcl> for AccountComponent

Source§

fn from(ecdsa: AuthEcdsaK256KeccakAcl) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<AuthEcdsaK256KeccakMultisig> for AccountComponent

Source§

fn from(multisig: AuthEcdsaK256KeccakMultisig) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<AuthRpoFalcon512> for AccountComponent

Source§

fn from(falcon: AuthRpoFalcon512) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<AuthRpoFalcon512Acl> for AccountComponent

Source§

fn from(falcon: AuthRpoFalcon512Acl) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<AuthRpoFalcon512Multisig> for AccountComponent

Source§

fn from(multisig: AuthRpoFalcon512Multisig) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<BasicFungibleFaucet> for AccountComponent

Source§

fn from(faucet: BasicFungibleFaucet) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<BasicWallet> for AccountComponent

Source§

fn from(_: BasicWallet) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<NetworkFungibleFaucet> for AccountComponent

Source§

fn from(network_faucet: NetworkFungibleFaucet) -> AccountComponent

Converts to this type from the input type.
Source§

impl From<NoAuth> for AccountComponent

Source§

fn from(_: NoAuth) -> AccountComponent

Converts to this type from the input type.
Source§

impl PartialEq for AccountComponent

Source§

fn eq(&self, other: &AccountComponent) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for AccountComponent

Source§

impl StructuralPartialEq for AccountComponent

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more