Skip to main content

DebugInfo

Struct DebugInfo 

pub struct DebugInfo { /* private fields */ }
Expand description

Debug information for a MAST forest, containing decorators and error messages.

Implementations§

§

impl DebugInfo

pub fn new() -> DebugInfo

Creates a new empty DebugInfo.

pub fn with_capacity( decorators_capacity: usize, nodes_capacity: usize, operations_capacity: usize, decorator_ids_capacity: usize, ) -> DebugInfo

Creates an empty DebugInfo with specified capacities.

pub fn empty_for_nodes(num_nodes: usize) -> DebugInfo

Creates an empty DebugInfo with valid CSR structures for N nodes.

pub fn is_empty(&self) -> bool

Returns true if this DebugInfo has no decorators, asm_ops, debug vars, error codes, or procedure names.

pub fn clear(&mut self)

Strips all debug information, removing decorators, asm_ops, debug vars, error codes, and procedure names.

This is used for release builds where debug info is not needed.

pub fn num_decorators(&self) -> usize

Returns the number of decorators.

pub fn decorators(&self) -> &[Decorator]

Returns all decorators as a slice.

pub fn decorator(&self, decorator_id: DecoratorId) -> Option<&Decorator>

Returns the decorator with the given ID, if it exists.

pub fn before_enter_decorators(&self, node_id: MastNodeId) -> &[DecoratorId]

Returns the before-enter decorators for the given node.

pub fn after_exit_decorators(&self, node_id: MastNodeId) -> &[DecoratorId]

Returns the after-exit decorators for the given node.

pub fn decorators_for_operation( &self, node_id: MastNodeId, local_op_idx: usize, ) -> &[DecoratorId]

Returns decorators for a specific operation within a node.

pub fn num_debug_vars(&self) -> usize

Returns the number of debug variables.

pub fn debug_vars(&self) -> &[DebugVarInfo]

Returns all debug variables as a slice.

pub fn debug_var(&self, debug_var_id: DebugVarId) -> Option<&DebugVarInfo>

Returns the debug variable with the given ID, if it exists.

pub fn debug_vars_for_operation( &self, node_id: MastNodeId, local_op_idx: usize, ) -> &[DebugVarId]

Returns debug variable IDs for a specific operation within a node.

pub fn add_decorator( &mut self, decorator: Decorator, ) -> Result<DecoratorId, MastForestError>

Adds a decorator and returns its ID.

pub fn clear_mappings(&mut self)

Clears all decorator information while preserving error codes.

This is used when rebuilding decorator information from nodes.

pub fn num_asm_ops(&self) -> usize

Returns the number of AssemblyOps.

pub fn asm_ops(&self) -> &[AssemblyOp]

Returns all AssemblyOps as a slice.

pub fn asm_op(&self, asm_op_id: AsmOpId) -> Option<&AssemblyOp>

Returns the AssemblyOp with the given ID, if it exists.

pub fn asm_op_for_operation( &self, node_id: MastNodeId, op_idx: usize, ) -> Option<&AssemblyOp>

Returns the AssemblyOp for a specific operation within a node, if any.

pub fn first_asm_op_for_node(&self, node_id: MastNodeId) -> Option<&AssemblyOp>

Returns the first AssemblyOp for a node, if any.

pub fn add_asm_op( &mut self, asm_op: AssemblyOp, ) -> Result<AsmOpId, MastForestError>

Adds an AssemblyOp and returns its ID.

pub fn register_asm_ops( &mut self, node_id: MastNodeId, num_operations: usize, asm_ops: Vec<(usize, AsmOpId)>, ) -> Result<(), AsmOpIndexError>

Registers operation-indexed AssemblyOps for a node.

The num_operations parameter must be the total number of operations in the node. This is needed to allocate enough space for all operations, even those without AssemblyOps, so that lookups at any valid operation index will work correctly.

pub fn add_debug_var( &mut self, debug_var: DebugVarInfo, ) -> Result<DebugVarId, MastForestError>

Adds a debug variable and returns its ID.

pub fn register_op_indexed_debug_vars( &mut self, node_id: MastNodeId, debug_vars_info: Vec<(usize, DebugVarId)>, ) -> Result<(), DecoratorIndexError>

Registers operation-indexed debug variables for a node.

This associates already-added debug variables with specific operations within a node.

pub fn error_message(&self, code: u64) -> Option<Arc<str>>

Returns an error message by code.

pub fn error_codes(&self) -> impl Iterator<Item = (&u64, &Arc<str>)>

Returns an iterator over error codes.

pub fn insert_error_code(&mut self, code: u64, msg: Arc<str>)

Inserts an error code with its message.

pub fn extend_error_codes<I>(&mut self, error_codes: I)
where I: IntoIterator<Item = (u64, Arc<str>)>,

Inserts multiple error codes at once.

This is used when bulk error code insertion is needed.

pub fn clear_error_codes(&mut self)

Clears all error codes.

This is used when error code information needs to be reset.

pub fn procedure_name(&self, digest: &Word) -> Option<&str>

Returns the procedure name for the given MAST root digest, if present.

pub fn procedure_names(&self) -> impl Iterator<Item = (Word, &Arc<str>)>

Returns an iterator over all (digest, name) pairs.

pub fn num_procedure_names(&self) -> usize

Returns the number of procedure names.

pub fn insert_procedure_name(&mut self, digest: Word, name: Arc<str>)

Inserts a procedure name for the given MAST root digest.

pub fn extend_procedure_names<I>(&mut self, names: I)
where I: IntoIterator<Item = (Word, Arc<str>)>,

Inserts multiple procedure names at once.

pub fn clear_procedure_names(&mut self)

Clears all procedure names.

Trait Implementations§

§

impl Clone for DebugInfo

§

fn clone(&self) -> DebugInfo

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
§

impl Debug for DebugInfo

§

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

Formats the value using the given formatter. Read more
§

impl Default for DebugInfo

§

fn default() -> DebugInfo

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

impl Deserializable for DebugInfo

§

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

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

fn min_serialized_size() -> usize

Returns the minimum serialized size for one instance of this type. Read more
§

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

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

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

Deserializes Self from bytes with a byte budget limit. Read more
§

impl<'de> Deserialize<'de> for DebugInfo

§

fn deserialize<__D>( __deserializer: __D, ) -> Result<DebugInfo, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
§

impl PartialEq for DebugInfo

§

fn eq(&self, other: &DebugInfo) -> 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.
§

impl Serializable for DebugInfo

§

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

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

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

Serializes self into a vector of bytes.
§

fn get_size_hint(&self) -> usize

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

impl Serialize for DebugInfo

§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl Eq for DebugInfo

§

impl StructuralPartialEq for DebugInfo

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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
§

impl<D> OwoColorize for D

§

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

Set the foreground color generically Read more
§

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

Set the background color generically. Read more
§

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

Change the foreground color to black
§

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

Change the background color to black
§

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

Change the foreground color to red
§

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

Change the background color to red
§

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

Change the foreground color to green
§

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

Change the background color to green
§

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

Change the foreground color to yellow
§

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

Change the background color to yellow
§

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

Change the foreground color to blue
§

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

Change the background color to blue
§

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

Change the foreground color to magenta
§

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

Change the background color to magenta
§

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

Change the foreground color to purple
§

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

Change the background color to purple
§

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

Change the foreground color to cyan
§

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

Change the background color to cyan
§

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

Change the foreground color to white
§

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

Change the background color to white
§

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

Change the foreground color to the terminal default
§

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

Change the background color to the terminal default
§

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

Change the foreground color to bright black
§

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

Change the background color to bright black
§

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

Change the foreground color to bright red
§

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

Change the background color to bright red
§

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

Change the foreground color to bright green
§

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

Change the background color to bright green
§

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

Change the foreground color to bright yellow
§

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

Change the background color to bright yellow
§

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

Change the foreground color to bright blue
§

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

Change the background color to bright blue
§

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

Change the foreground color to bright magenta
§

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

Change the background color to bright magenta
§

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

Change the foreground color to bright purple
§

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

Change the background color to bright purple
§

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

Change the foreground color to bright cyan
§

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

Change the background color to bright cyan
§

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

Change the foreground color to bright white
§

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

Change the background color to bright white
§

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

Make the text bold
§

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

Make the text dim
§

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

Make the text italicized
§

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

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

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

Swap the foreground and background colors
§

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

Hide the text
§

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

Cross out the text
§

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
§

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
§

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

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

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

Sets the foreground color to an RGB value.
§

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

Sets the background color to an RGB value.
§

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

Apply a runtime-determined style
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

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

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,