Struct miden_assembly::ast::ModuleImports

source ·
pub struct ModuleImports { /* private fields */ }
Expand description

Information about imports stored in the AST

Implementations§

source§

impl ModuleImports

source

pub fn new( imports: BTreeMap<String, LibraryPath>, invoked_procs: BTreeMap<ProcedureId, (ProcedureName, LibraryPath)> ) -> Self

Create a new ModuleImports instance

§Panics

Panics if the number of imports is greater than MAX_IMPORTS, or if the number of invoked procedures is greater than MAX_INVOKED_IMPORTED_PROCS

source

pub fn parse(tokens: &mut TokenStream<'_>) -> Result<Self, ParsingError>

Parses all use statements into a map of imports which maps a module name (e.g., “u64”) to its fully-qualified path (e.g., “std::math::u64”).

source

pub fn is_empty(&self) -> bool

Returns true if there are no imports in the containing module

source

pub fn len(&self) -> usize

Returns the number of imports contained in this table

source

pub fn get_module_path(&self, module_name: &str) -> Option<&LibraryPath>

Look up the path of the imported module with the given name.

source

pub fn get_procedure_info( &self, id: &ProcedureId ) -> Option<(&ProcedureName, &LibraryPath)>

Look up the actual procedure name and module path associated with the given ProcedureId, if that procedure was imported and invoked in the current module.

source

pub fn get_procedure_name(&self, id: &ProcedureId) -> Option<&ProcedureName>

Look up the procedure name associated with the given ProcedureId, if that procedure was imported and invoked in the current module.

source

pub fn get_procedure_path(&self, id: &ProcedureId) -> Option<&LibraryPath>

Look up the LibraryPath associated with the given ProcedureId, if that procedure was imported and invoked in the current module.

source

pub fn import_paths(&self) -> Vec<&LibraryPath>

Return the paths of all imported module

source

pub fn get_imported_procedures(&self) -> BTreeMap<ProcedureId, ProcedureName>

Returns a map containing IDs and names of imported procedures.

source

pub fn add_invoked_proc( &mut self, proc_name: &ProcedureName, module_name: &str, token: &Token<'_> ) -> Result<ProcedureId, ParsingError>

Adds the specified procedure to the set of procedures invoked from imported modules and returns the ID of the invoked procedure.

§Errors

Return an error if

  • The module with the specified name has not been imported via the use statement.
  • The total number of invoked procedures exceeds 2^{16} - 1.
source

pub fn clear(&mut self)

Clears all stored information about imported modules and invoked procedures

Trait Implementations§

source§

impl Clone for ModuleImports

source§

fn clone(&self) -> ModuleImports

Returns a copy 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 ModuleImports

source§

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

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

impl Default for ModuleImports

source§

fn default() -> ModuleImports

Returns the “default value” for a type. Read more
source§

impl Deserializable for ModuleImports

source§

fn read_from<R: ByteReader>( source: &mut R ) -> Result<Self, DeserializationError>

Reads a sequence of bytes from the provided source, attempts to deserialize these bytes into Self, and returns the result. Read more
source§

fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>

Attempts to deserialize the provided bytes into Self and returns the result. Read more
source§

impl PartialEq for ModuleImports

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serializable for ModuleImports

source§

fn write_into<W: ByteWriter>(&self, target: &mut W)

Serializes self into bytes and writes these bytes into the target.
source§

fn to_bytes(&self) -> Vec<u8>

Serializes self into a vector of bytes.
source§

fn get_size_hint(&self) -> usize

Returns an estimate of how many bytes are needed to represent self. Read more
source§

impl Eq for ModuleImports

source§

impl StructuralPartialEq for ModuleImports

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> 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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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

§

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

§

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