A type that can be implemented as a simple relation.
| 170 | |
| 171 | /// A type that can be implemented as a simple relation. |
| 172 | pub trait Implementable { |
| 173 | /// Returns names of any other implementable things that need to |
| 174 | /// be available before implementing this one. Attributes are not |
| 175 | /// mentioned explicitley as dependencies. |
| 176 | fn dependencies(&self) -> Dependencies; |
| 177 | |
| 178 | /// Transforms an implementable into an equivalent set of bindings |
| 179 | /// that can be unified by Hector. |
| 180 | fn into_bindings(&self) -> Vec<Binding> { |
| 181 | panic!("This plan can't be implemented via Hector."); |
| 182 | } |
| 183 | |
| 184 | /// @TODO |
| 185 | fn datafy(&self) -> Vec<(Eid, Aid, Value)> { |
| 186 | Vec::new() |
| 187 | } |
| 188 | |
| 189 | /// Implements the type as a simple relation. |
| 190 | fn implement<'b, T, I, S>( |
| 191 | &self, |
| 192 | nested: &mut Iterative<'b, S, u64>, |
| 193 | local_arrangements: &VariableMap<Iterative<'b, S, u64>>, |
| 194 | context: &mut I, |
| 195 | ) -> (Implemented<'b, S>, ShutdownHandle) |
| 196 | where |
| 197 | T: Timestamp + Lattice, |
| 198 | I: ImplContext<T>, |
| 199 | S: Scope<Timestamp = T>; |
| 200 | } |
| 201 | |
| 202 | /// Possible query plan types. |
| 203 | #[derive(Hash, PartialEq, Eq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] |
nothing calls this directly
no outgoing calls
no test coverage detected