Trait Evaluate

Source
pub trait Evaluate: Clone {
    type Target;
    type Error;
    type Context: PartialContext<Self::Target>;

    // Required method
    fn evaluate(
        &self,
        ctx: &Self::Context,
        under_binders: bool,
    ) -> Result<Self::Target, Self::Error>;

    // Provided methods
    fn normalise(
        &self,
        ctx: &Self::Context,
        under_binders: bool,
    ) -> Result<Self, Self::Error>
       where Self::Target: Into<Self> { ... }
    fn evaluate_closed(
        &self,
        under_binders: bool,
    ) -> Result<Self::Target, Self::Error> { ... }
    fn normalise_closed(&self, under_binders: bool) -> Result<Self, Self::Error>
       where Self::Target: Into<Self> { ... }
}

Required Associated Types§

Required Methods§

Source

fn evaluate( &self, ctx: &Self::Context, under_binders: bool, ) -> Result<Self::Target, Self::Error>

Provided Methods§

Source

fn normalise( &self, ctx: &Self::Context, under_binders: bool, ) -> Result<Self, Self::Error>
where Self::Target: Into<Self>,

Source

fn evaluate_closed( &self, under_binders: bool, ) -> Result<Self::Target, Self::Error>

Source

fn normalise_closed(&self, under_binders: bool) -> Result<Self, Self::Error>
where Self::Target: Into<Self>,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T: Evaluate> Evaluate for Box<T>

Source§

type Target = <T as Evaluate>::Target

Source§

type Error = <T as Evaluate>::Error

Source§

type Context = <T as Evaluate>::Context

Source§

fn evaluate( &self, ctx: &Self::Context, under_binders: bool, ) -> Result<Self::Target, Self::Error>

Implementors§