Skip to main content

Env

Struct Env 

Source
pub struct Env<'e> {
    pub known: &'e dyn Fn(&str) -> bool,
    pub shadow: &'e dyn Fn(&str) -> Option<String>,
}
Expand description

The environment a written name is resolved against — the two questions resolution asks of it, as closures, which is what keeps the kernel out of the surface.

Fields§

§known: &'e dyn Fn(&str) -> bool

Is this absolute key declared?

§shadow: &'e dyn Fn(&str) -> Option<String>

The fresh identity this absolute written name denotes, when a shadow redirects it (Context::shadow_of).

Implementations§

Source§

impl Env<'_>

Source

pub fn resolve(&self, ns: &Namespaces, written: &Name) -> Resolution

What written denotes: the absolute key the namespace scope resolves it to, then — unless it was written with the _root_ escape — the identity a shadow redirects that key to.

★ THE ONE RESOLUTION POINT. Every surface that reads a name reads it here: the term and command doors through resolve_names_in, the literate door as it reads each name, the REPL’s Print Axioms, Structure and Quotient references. The shadow is applied AFTER the scope has chosen an absolute key, and to that key alone, so a shadow never takes part in the scope’s own decisions (which namespace, which open, whether two readings are ambiguous), and the escape keeps meaning what it means in Lean: the environment’s own declaration, whatever shadows its name.

Auto Trait Implementations§

§

impl<'e> Freeze for Env<'e>

§

impl<'e> !RefUnwindSafe for Env<'e>

§

impl<'e> !Send for Env<'e>

§

impl<'e> !Sync for Env<'e>

§

impl<'e> Unpin for Env<'e>

§

impl<'e> UnsafeUnpin for Env<'e>

§

impl<'e> !UnwindSafe for Env<'e>

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
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> Same for T

Source§

type Output = T

Should always be Self
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,