pub trait Compileable<Extra> {
    type Expr;

    // Required method
    fn compile<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
        self,
        compiler: &'life0 mut ModuleCompiler<'life1, 'life2>,
        thread: &'life3 Thread,
        file: &'life4 str,
        expr_str: &'life5 str,
        arg: Extra
    ) -> Pin<Box<dyn Future<Output = Result<CompileValue<Self::Expr>>> + Send + 'async_trait>>
       where Extra: 'async_trait,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             'life5: 'async_trait;
}

Required Associated Types§

Required Methods§

source

fn compile<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>( self, compiler: &'life0 mut ModuleCompiler<'life1, 'life2>, thread: &'life3 Thread, file: &'life4 str, expr_str: &'life5 str, arg: Extra ) -> Pin<Box<dyn Future<Output = Result<CompileValue<Self::Expr>>> + Send + 'async_trait>>
where Extra: 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait,

Implementors§

source§

impl<'a, 'b, T> Compileable<Option<&'b ArcType>> for T
where T: Typecheckable + Send, T::Expr: Send + Sync,

§

type Expr = <T as Typecheckable>::Expr

source§

impl<'e, E, Extra> Compileable<Extra> for &'e TypecheckValue<E>
where E: Borrow<OwnedExpr<Symbol>> + Send + Sync, Extra: Send,

§

type Expr = &'e E

source§

impl<E, Extra> Compileable<Extra> for TypecheckValue<E>
where E: Borrow<OwnedExpr<Symbol>> + Send + Sync, Extra: Send,

§

type Expr = E