Trait Implementable

Source
pub trait Implementable {
    // Required methods
    fn dependencies(&self) -> Dependencies;
    fn implement<'b, T, I, S>(
        &self,
        nested: &mut Iterative<'b, S, u64>,
        local_arrangements: &HashMap<String, Variable<Iterative<'b, S, u64>, Vec<Value>, isize>>,
        context: &mut I,
    ) -> (Implemented<'b, S>, ShutdownHandle)
       where T: Timestamp + Lattice,
             I: ImplContext<T>,
             S: Scope<Timestamp = T>;

    // Provided methods
    fn into_bindings(&self) -> Vec<Binding> { ... }
    fn datafy(&self) -> Vec<(Eid, Aid, Value)> { ... }
}
Expand description

A type that can be implemented as a simple relation.

Required Methods§

Source

fn dependencies(&self) -> Dependencies

Returns names of any other implementable things that need to be available before implementing this one. Attributes are not mentioned explicitley as dependencies.

Source

fn implement<'b, T, I, S>( &self, nested: &mut Iterative<'b, S, u64>, local_arrangements: &HashMap<String, Variable<Iterative<'b, S, u64>, Vec<Value>, isize>>, context: &mut I, ) -> (Implemented<'b, S>, ShutdownHandle)
where T: Timestamp + Lattice, I: ImplContext<T>, S: Scope<Timestamp = T>,

Implements the type as a simple relation.

Provided Methods§

Source

fn into_bindings(&self) -> Vec<Binding>

Transforms an implementable into an equivalent set of bindings that can be unified by Hector.

Source

fn datafy(&self) -> Vec<(Eid, Aid, Value)>

@TODO

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.

Implementors§