ascent 0.6.0-alpha

Logic programming in Rust
Documentation

pub trait ToRelIndex0<Rel> {
   
   type RelIndex<'a> where Self: 'a, Rel: 'a;
   fn to_rel_index<'a>(&'a self, rel: &'a Rel) -> Self::RelIndex<'a>;
   
   type RelIndexWrite<'a> where Self: 'a, Rel: 'a;
   fn to_rel_index_write<'a>(&'a mut self, rel: &'a mut Rel) -> Self::RelIndexWrite<'a>;

   type CRelIndexWrite<'a> where Self: 'a, Rel: 'a;
   fn to_c_rel_index_write<'a>(&'a self, rel: &'a Rel) -> Self::CRelIndexWrite<'a>;
}

pub trait ToRelIndex<Rel> {
   
   type RelIndex<'a> where Self: 'a, Rel: 'a;
   fn to_rel_index<'a>(&'a self, rel: &'a Rel) -> Self::RelIndex<'a>;
   
   type RelIndexWrite<'a> where Self: 'a, Rel: 'a;
   fn to_rel_index_write<'a>(&'a mut self, rel: &'a mut Rel) -> Self::RelIndexWrite<'a>;
}

impl<T, Rel> ToRelIndex0<Rel> for T where T: ToRelIndex<Rel> {
   type RelIndex<'a> = T::RelIndex<'a> where Self: 'a, Rel: 'a;

   #[inline(always)]
   fn to_rel_index<'a>(&'a self, rel: &'a Rel) -> Self::RelIndex<'a> {
      self.to_rel_index(rel)
   }

   type RelIndexWrite<'a> = T::RelIndexWrite<'a> where Self: 'a, Rel: 'a;
   #[inline(always)]
   fn to_rel_index_write<'a>(&'a mut self, rel: &'a mut Rel) -> Self::RelIndexWrite<'a> {
      self.to_rel_index_write(rel)
   }

   type CRelIndexWrite<'a> = T::RelIndex<'a> where Self: 'a, Rel: 'a;
   #[inline(always)]
   fn to_c_rel_index_write<'a>(&'a self, rel: &'a Rel) -> Self::CRelIndexWrite<'a> {
      self.to_rel_index(rel)
   }
}