pub trait DoubleEndedIteratorSpec: DoubleEndedIterator + IteratorSpec {
// Required methods
fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool;
fn produces_back_refl(self);
fn produces_back_trans(
a: Self,
ab: Seq<Self::Item>,
b: Self,
bc: Seq<Self::Item>,
c: Self,
);
}Required Methods§
Sourcefn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
(prophetic) ⚠
Sourcefn produces_back_refl(self)
fn produces_back_refl(self)
(law) ⚠
ensures
self.produces_back(Seq::empty(), self)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.
Implementations on Foreign Types§
Source§impl<Idx: DeepModel<DeepModelTy = Int> + Step> DoubleEndedIteratorSpec for Range<Idx>
Available on crate feature nightly only.
impl<Idx: DeepModel<DeepModelTy = Int> + Step> DoubleEndedIteratorSpec for Range<Idx>
Available on crate feature
nightly only.Source§fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
(open)
pearlite! { self.start == o.start && self.end.deep_model() >= o.end.deep_model() && (visited.len() > 0 ==> o.end.deep_model() >= o.start.deep_model()) && visited.len() == o.end.deep_model() - self.end.deep_model() && forall<i> 0 <= i && i < visited.len() ==> visited[i].deep_model() == self.end.deep_model() - i }
Source§fn produces_back_refl(self)
fn produces_back_refl(self)
(law) ⚠
ensures
self.produces_back(Seq::empty(), self)Source§impl<Idx: DeepModel<DeepModelTy = Int> + Step> DoubleEndedIteratorSpec for RangeInclusive<Idx>
Available on crate feature nightly only.
impl<Idx: DeepModel<DeepModelTy = Int> + Step> DoubleEndedIteratorSpec for RangeInclusive<Idx>
Available on crate feature
nightly only.Source§fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
fn produces_back(self, visited: Seq<Self::Item>, o: Self) -> bool
(open)
pearlite! { visited.len() == range_inclusive_len(self) - range_inclusive_len(o) && (self.is_empty_log() ==> o.is_empty_log()) && (o.is_empty_log() || self.start_log() == o.start_log()) && forall<i> 0 <= i && i < visited.len() ==> visited[i].deep_model() == self.end_log().deep_model() - i }
Source§fn produces_back_refl(self)
fn produces_back_refl(self)
(open, law)
{}ensures
self.produces_back(Seq::empty(), self)