pub struct AccountComponentMetadata { /* private fields */ }
Expand description
Represents the full component template configuration.
An account component metadata describes the component alongside its storage layout. On the storage layout, placeholders can be utilized to identify values that should be provided at the moment of instantiation.
When the std
feature is enabled, this struct allows for serialization and deserialization to
and from a TOML file.
§Guarantees
- The metadata’s storage layout does not contain duplicate slots, and it always starts at slot index 0.
- Storage slots are laid out in a contiguous manner.
- Each placeholder represents a single value. The expected placeholders can be retrieved with AccountComponentMetadata::get_placeholder_requirements(), which returns a map from keys to PlaceholderTypeRequirement (which, in turn, indicates the expected value type for the placeholder).
§Example
let first_felt = FeltRepresentation::from(Felt::new(0u64));
let second_felt = FeltRepresentation::from(Felt::new(1u64));
let third_felt = FeltRepresentation::from(Felt::new(2u64));
// Templated element:
let last_element =
FeltRepresentation::new_template(TemplateType::new("felt")?, StorageValueName::new("foo")?);
let word_representation = WordRepresentation::new_value(
[first_felt, second_felt, third_felt, last_element],
Some(StorageValueName::new("test_value")?.into()),
)
.with_description("this is the first entry in the storage layout");
let storage_entry = StorageEntry::new_value(0, word_representation);
let init_storage_data =
InitStorageData::new([(StorageValueName::new("test_value.foo")?, "300".to_string())]);
let component_template = AccountComponentMetadata::new(
"test name".into(),
"description of the component".into(),
Version::parse("0.1.0")?,
BTreeSet::new(),
vec![storage_entry],
)?;
let library = Assembler::default().assemble_library([CODE]).unwrap();
let template = AccountComponentTemplate::new(component_template, library);
let component = AccountComponent::from_template(&template, &init_storage_data)?;
Implementations§
Source§impl AccountComponentMetadata
impl AccountComponentMetadata
Sourcepub fn from_toml(
toml_string: &str,
) -> Result<Self, AccountComponentTemplateError>
pub fn from_toml( toml_string: &str, ) -> Result<Self, AccountComponentTemplateError>
Deserializes toml_string
and validates the resulting AccountComponentMetadata
§Errors
- If deserialization fails
- If the template specifies storage slots with duplicates.
- If the template includes slot numbers that do not start at zero.
- If storage slots in the template are not contiguous.
Source§impl AccountComponentMetadata
impl AccountComponentMetadata
Sourcepub fn new(
name: String,
description: String,
version: Version,
targets: BTreeSet<AccountType>,
storage: Vec<StorageEntry>,
) -> Result<Self, AccountComponentTemplateError>
pub fn new( name: String, description: String, version: Version, targets: BTreeSet<AccountType>, storage: Vec<StorageEntry>, ) -> Result<Self, AccountComponentTemplateError>
Create a new AccountComponentMetadata.
§Errors
- If the specified storage slots contain duplicates.
- If the slot numbers do not start at zero.
- If the slots are not contiguous.
Sourcepub fn get_placeholder_requirements(
&self,
) -> BTreeMap<StorageValueName, PlaceholderTypeRequirement>
pub fn get_placeholder_requirements( &self, ) -> BTreeMap<StorageValueName, PlaceholderTypeRequirement>
Retrieves a map of unique storage placeholder names mapped to their expected type that require a value at the moment of component instantiation.
These values will be used for initializing storage slot values, or storage map entries. For a full example on how a placeholder may be utilized, please refer to the docs for AccountComponentMetadata.
Types for the returned storage placeholders are inferred based on their location in the storage layout structure.
Sourcepub fn description(&self) -> &str
pub fn description(&self) -> &str
Returns the description of the account component.
Sourcepub fn supported_types(&self) -> &BTreeSet<AccountType>
pub fn supported_types(&self) -> &BTreeSet<AccountType>
Returns the account types supported by the component.
Sourcepub fn storage_entries(&self) -> &Vec<StorageEntry>
pub fn storage_entries(&self) -> &Vec<StorageEntry>
Returns the list of storage entries of the component.
Trait Implementations§
Source§impl Clone for AccountComponentMetadata
impl Clone for AccountComponentMetadata
Source§fn clone(&self) -> AccountComponentMetadata
fn clone(&self) -> AccountComponentMetadata
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for AccountComponentMetadata
impl Debug for AccountComponentMetadata
Source§impl Deserializable for AccountComponentMetadata
impl Deserializable for AccountComponentMetadata
Source§fn read_from<R: ByteReader>(
source: &mut R,
) -> Result<Self, DeserializationError>
fn read_from<R: ByteReader>( source: &mut R, ) -> Result<Self, DeserializationError>
source
, attempts to deserialize these bytes
into Self
, and returns the result. Read moreSource§fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
Source§impl<'de> Deserialize<'de> for AccountComponentMetadata
impl<'de> Deserialize<'de> for AccountComponentMetadata
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for AccountComponentMetadata
impl PartialEq for AccountComponentMetadata
Source§impl Serializable for AccountComponentMetadata
impl Serializable for AccountComponentMetadata
Source§fn write_into<W: ByteWriter>(&self, target: &mut W)
fn write_into<W: ByteWriter>(&self, target: &mut W)
self
into bytes and writes these bytes into the target
.Source§fn get_size_hint(&self) -> usize
fn get_size_hint(&self) -> usize
Source§impl Serialize for AccountComponentMetadata
impl Serialize for AccountComponentMetadata
impl Eq for AccountComponentMetadata
impl StructuralPartialEq for AccountComponentMetadata
Auto Trait Implementations§
impl Freeze for AccountComponentMetadata
impl RefUnwindSafe for AccountComponentMetadata
impl Send for AccountComponentMetadata
impl Sync for AccountComponentMetadata
impl Unpin for AccountComponentMetadata
impl UnwindSafe for AccountComponentMetadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more