pub struct AccountComponentMetadata { /* private fields */ }Expand description
Represents the full component metadata configuration.
An account component metadata describes the component alongside its storage layout. The storage layout can declare typed values which must be provided at instantiation time via InitStorageData. These can appear either at the slot level (a singular word slot) or inside composed words as typed fields.
When the std feature is enabled, this struct allows for serialization and deserialization to
and from a TOML file.
§Guarantees
- The metadata’s storage schema does not contain duplicate slot names.
- The schema cannot contain protocol-reserved slot names.
- Each init-time value name uniquely identifies a single value. The expected init-time metadata can be retrieved with AccountComponentMetadata::schema_requirements(), which returns a map from keys to SchemaRequirement (which indicates the expected value type and optional defaults).
§Example
use std::collections::{BTreeMap, BTreeSet};
use miden_protocol::account::StorageSlotName;
use miden_protocol::account::component::{
AccountComponentMetadata,
FeltSchema,
InitStorageData,
SchemaTypeId,
StorageSchema,
StorageSlotSchema,
StorageValueName,
ValueSlotSchema,
WordSchema,
WordValue,
};
use semver::Version;
let slot_name = StorageSlotName::new("demo::test_value")?;
let word = WordSchema::new_value([
FeltSchema::new_void(),
FeltSchema::new_void(),
FeltSchema::new_void(),
FeltSchema::new_typed(SchemaTypeId::native_felt(), "foo"),
]);
let storage_schema = StorageSchema::new([(
slot_name.clone(),
StorageSlotSchema::Value(ValueSlotSchema::new(Some("demo slot".into()), word)),
)])?;
let metadata = AccountComponentMetadata::new(
"test name".into(),
"description of the component".into(),
Version::parse("0.1.0")?,
BTreeSet::new(),
storage_schema,
);
// Init value keys are derived from slot name: `demo::test_value.foo`.
let value_name = StorageValueName::from_slot_name_with_suffix(&slot_name, "foo")?;
let mut init_storage_data = InitStorageData::default();
init_storage_data.set_value(value_name, WordValue::Atomic("300".into()))?;
let storage_slots = metadata.storage_schema().build_storage_slots(&init_storage_data)?;
assert_eq!(storage_slots.len(), 1);Implementations§
Source§impl AccountComponentMetadata
impl AccountComponentMetadata
Sourcepub fn new(
name: String,
description: String,
version: Version,
targets: BTreeSet<AccountType>,
storage_schema: StorageSchema,
) -> Self
pub fn new( name: String, description: String, version: Version, targets: BTreeSet<AccountType>, storage_schema: StorageSchema, ) -> Self
Create a new AccountComponentMetadata.
Sourcepub fn schema_requirements(
&self,
) -> BTreeMap<StorageValueName, SchemaRequirement>
pub fn schema_requirements( &self, ) -> BTreeMap<StorageValueName, SchemaRequirement>
Returns the init-time values requirements for this schema.
These values are used for initializing storage slot values or storage map entries. For a full example, refer to the docs for AccountComponentMetadata.
Types for returned init values are inferred based on their location in the storage layout.
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_schema(&self) -> &StorageSchema
pub fn storage_schema(&self) -> &StorageSchema
Returns the storage schema of the component.
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 schema specifies storage slots with duplicates.
- If the schema contains invalid slot definitions.
Sourcepub fn to_toml(&self) -> Result<String, AccountComponentTemplateError>
pub fn to_toml(&self) -> Result<String, AccountComponentTemplateError>
Serializes the account component metadata into a TOML string.
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
Source§impl TryFrom<&Package> for AccountComponentMetadata
impl TryFrom<&Package> 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<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<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>
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>
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 moreSource§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