[][src]Struct ucglib::build::scope::Scope

pub struct Scope {
    pub import_stack: Vec<String>,
    pub env: Rc<Val>,
    pub curr_val: Option<Rc<Val>>,
    pub build_output: ValueMap,
    pub search_curr_val: bool,
    pub strict: bool,
}

Defines a scope for execution in ucg.

Scopes in ucg are defined by the currently executing file and the complex data types in that file. (Tuple, List, Modules, and the left operands for dot selectors).

UCG Scopes do not descend up into their parent scopes so we do not maintain a stack for those.

Fields

import_stack: Vec<String>env: Rc<Val>curr_val: Option<Rc<Val>>build_output: ValueMapsearch_curr_val: boolstrict: bool

Methods

impl Scope[src]

pub fn new(env: Rc<Val>) -> Self[src]

pub fn use_strict(self) -> Self[src]

pub fn use_curr_val(self) -> Self[src]

pub fn spawn_child(&self) -> Self[src]

Spawn a child scope based on the current scope but without the current val set.

pub fn spawn_clean(&self) -> Self[src]

pub fn push_import<S: Into<String>>(&mut self, path: S)[src]

Push an import onto the import stack.

pub fn prepend_import_stack(&mut self, imports: &Vec<String>)[src]

pub fn set_curr_val(self, val: Rc<Val>) -> Self[src]

Set the current value for our execution context.

pub fn lookup_idx(
    &self,
    pos: &Position,
    idx: &Val
) -> Result<Rc<Val>, Box<dyn Error>>
[src]

Lookup up a list index in the current value

pub fn lookup_sym(
    &self,
    sym: &PositionedItem<String>,
    is_symbol: bool
) -> Option<Rc<Val>>
[src]

Lookup a symbol in the current execution context.

The lookup rules are simple.

  • env is always an environment variable lookup.
  • self is always the current value. This symbol is only valid when the current value is a tuple.
  • everything else is looked up in the currently accumulated build output for this execution context.

Trait Implementations

impl Clone for Scope[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl PartialEq<Scope> for Scope[src]

impl Debug for Scope[src]

Auto Trait Implementations

impl !Send for Scope

impl !Sync for Scope

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.