#![deny(missing_docs)]
pub struct Trip<F, S, T> {
pub first: F,
pub second: S,
pub third: T
}
pub trait Trips<C, F, S, T, E> {
fn collections(&self) -> Result<Vec<C>, E>;
fn add_collection(&mut self, collection: &C) -> Result<(), E>;
fn remove_collection(&mut self, collection: &C) -> Result<(), E>;
fn statements(&self, collection: &C) -> Result<Vec<Trip<F, S, T>>, E>;
fn add_statements(
&self,
collection: &C,
trips: Vec<Trip<F, S, T>>,
) -> Result<(), E>;
fn remove_statements(
&self,
collection: &C,
trips: Vec<Trip<F, S, T>>
) -> Result<(), E>;
fn query(&self) -> Result<Box<dyn Query<F, S, T, E>>, E>; }
pub trait Query<F, S, T, E> {
fn find(
&self,
first: Option<F>,
second: Option<S>,
third: Option<T>,
) -> Result<Vec<Trip<F,S,T>>, E>;
}