Stack

Struct Stack 

Source
pub struct Stack(/* private fields */);
Expand description

A stack with a list of stack frames.

StackFrames can have the following different types:

  • source file (bottom of stack)
  • modules ( e.g. mod my_lib { ... })
  • init calls (e.g. std::geo2d::Circle(radius = 1m))
  • function calls (e.g. std::print("µcad"))
  • bodies (e.g. { ... })

Implementations§

Source§

impl Stack

Source

pub fn put_local( &mut self, id: Option<Identifier>, symbol: Symbol, ) -> EvalResult<()>

Put (or overwrite any existing) symbol into the current stack frame.

  • id: identifier of the symbol to add/set. The symbol’s internal identifier is used when None.
Source

pub fn current_module_name(&self) -> QualifiedName

Get name of current module.

Source

pub fn current_workbench_name(&self) -> Option<QualifiedName>

Get name of current workbench.

Source

pub fn current_frame(&self) -> Option<&StackFrame>

Return the current stack frame if there is any.

Source

pub fn pretty_print_call_trace( &self, f: &mut dyn Write, source_by_hash: &impl GetSourceByHash, ) -> Result

Pretty print call trace.

Trait Implementations§

Source§

impl Default for Stack

Source§

fn default() -> Stack

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

impl Display for Stack

Source§

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

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

impl Locals for Stack

Source§

fn current_name(&self) -> QualifiedName

Get name of current workbench or module (might be empty).

Source§

fn open(&mut self, frame: StackFrame)

Don’t use this function directly.
Source§

fn close(&mut self)

Close scope (stack pop).
Source§

fn set_local_value(&mut self, id: Identifier, value: Value) -> EvalResult<()>

Set/add a named local value to current locals.
Source§

fn get_local_value(&self, id: &Identifier) -> EvalResult<Value>

Get a named local value from locals.
Source§

fn get_model(&self) -> EvalResult<Model>

Get a property value from current model.
Source§

fn fetch(&self, id: &Identifier) -> EvalResult<Symbol>

Fetch a local variable from current stack frame.

Auto Trait Implementations§

§

impl Freeze for Stack

§

impl !RefUnwindSafe for Stack

§

impl !Send for Stack

§

impl !Sync for Stack

§

impl Unpin for Stack

§

impl !UnwindSafe for Stack

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToCompactString for T
where T: Display,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.
Source§

impl<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool