pub struct Library { /* private fields */ }
Expand description
Represents a library where all modules were compiled into a MastForest
.
A library exports a set of one or more procedures. Currently, all exported procedures belong to the same top-level namespace.
Implementations§
Source§impl Library
Constructors
impl Library
Constructors
Sourcepub fn new(
mast_forest: Arc<MastForest>,
exports: BTreeMap<QualifiedProcedureName, MastNodeId>,
) -> Result<Library, LibraryError>
pub fn new( mast_forest: Arc<MastForest>, exports: BTreeMap<QualifiedProcedureName, MastNodeId>, ) -> Result<Library, LibraryError>
Sourcepub fn with_advice_map(self, advice_map: AdviceMap) -> Library
pub fn with_advice_map(self, advice_map: AdviceMap) -> Library
Produces a new library with the existing MastForest
and where all key/values in the
provided advice map are added to the internal advice map.
Source§impl Library
Public accessors
impl Library
Public accessors
Sourcepub fn digest(&self) -> &RpoDigest
pub fn digest(&self) -> &RpoDigest
Returns the RpoDigest representing the content hash of this library
Sourcepub fn exports(&self) -> impl Iterator<Item = &QualifiedProcedureName>
pub fn exports(&self) -> impl Iterator<Item = &QualifiedProcedureName>
Returns the fully qualified name of all procedures exported by the library.
Sourcepub fn num_exports(&self) -> usize
pub fn num_exports(&self) -> usize
Returns the number of exports in this library.
Sourcepub fn get_export_node_id(
&self,
proc_name: &QualifiedProcedureName,
) -> MastNodeId
pub fn get_export_node_id( &self, proc_name: &QualifiedProcedureName, ) -> MastNodeId
Returns a MAST node ID associated with the specified exported procedure.
§Panics
Panics if the specified procedure is not exported from this library.
Sourcepub fn is_reexport(&self, proc_name: &QualifiedProcedureName) -> bool
pub fn is_reexport(&self, proc_name: &QualifiedProcedureName) -> bool
Returns true if the specified exported procedure is re-exported from a dependency.
Sourcepub fn mast_forest(&self) -> &Arc<MastForest>
pub fn mast_forest(&self) -> &Arc<MastForest>
Returns a reference to the inner MastForest
.
Source§impl Library
Conversions
impl Library
Conversions
Sourcepub fn module_infos(&self) -> impl Iterator<Item = ModuleInfo>
pub fn module_infos(&self) -> impl Iterator<Item = ModuleInfo>
Returns an iterator over the module infos of the library.
Source§impl Library
impl Library
Sourcepub const LIBRARY_EXTENSION: &'static str = "masl"
pub const LIBRARY_EXTENSION: &'static str = "masl"
File extension for the Assembly Library.
Sourcepub fn write_to_file(&self, path: impl AsRef<Path>) -> Result<(), Error>
pub fn write_to_file(&self, path: impl AsRef<Path>) -> Result<(), Error>
Write the library to a target file
NOTE: It is up to the caller to use the correct file extension, but there is no
specific requirement that the extension be set, or the same as
Self::LIBRARY_EXTENSION
.
Sourcepub fn from_dir(
path: impl AsRef<Path>,
namespace: LibraryNamespace,
assembler: Assembler,
) -> Result<Library, Report>
pub fn from_dir( path: impl AsRef<Path>, namespace: LibraryNamespace, assembler: Assembler, ) -> Result<Library, Report>
Create a Library from a standard Miden Assembly project layout.
The standard layout dictates that a given path is the root of a namespace, and the
directory hierarchy corresponds to the namespace hierarchy. A .masm
file found in a
given subdirectory of the root, will be parsed with its LibraryPath set based on
where it resides in the directory structure.
This function recursively parses the entire directory structure under path
, ignoring
any files which do not have the .masm
extension.
For example, let’s say I call this function like so:
use std::sync::Arc;
use miden_assembly::{Assembler, Library, LibraryNamespace};
use vm_core::debuginfo::DefaultSourceManager;
Library::from_dir(
"~/masm/std",
LibraryNamespace::new("std").unwrap(),
Assembler::new(Arc::new(DefaultSourceManager::default())),
);
Here’s how we would handle various files under this path:
- ~/masm/std/sys.masm -> Parsed as “std::sys”
- ~/masm/std/crypto/hash.masm -> Parsed as “std::crypto::hash”
- ~/masm/std/math/u32.masm -> Parsed as “std::math::u32”
- ~/masm/std/math/u64.masm -> Parsed as “std::math::u64”
- ~/masm/std/math/README.md -> Ignored
pub fn deserialize_from_file( path: impl AsRef<Path>, ) -> Result<Library, DeserializationError>
Trait Implementations§
Source§impl AsRef<Library> for KernelLibrary
impl AsRef<Library> for KernelLibrary
Source§impl Deserializable for Library
impl Deserializable for Library
Source§fn read_from<R>(source: &mut R) -> Result<Library, DeserializationError>where
R: ByteReader,
fn read_from<R>(source: &mut R) -> Result<Library, DeserializationError>where
R: ByteReader,
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 From<AccountComponent> for Library
impl From<AccountComponent> for Library
Source§fn from(component: AccountComponent) -> Self
fn from(component: AccountComponent) -> Self
Source§impl Serializable for Library
impl Serializable for Library
Source§fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
fn write_into<W>(&self, target: &mut W)where
W: ByteWriter,
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 TryFrom<Library> for KernelLibrary
impl TryFrom<Library> for KernelLibrary
Source§type Error = LibraryError
type Error = LibraryError
Source§fn try_from(
library: Library,
) -> Result<KernelLibrary, <KernelLibrary as TryFrom<Library>>::Error>
fn try_from( library: Library, ) -> Result<KernelLibrary, <KernelLibrary as TryFrom<Library>>::Error>
impl Eq for Library
impl StructuralPartialEq for Library
Auto Trait Implementations§
impl Freeze for Library
impl RefUnwindSafe for Library
impl Send for Library
impl Sync for Library
impl Unpin for Library
impl UnwindSafe for Library
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