pub struct FullBorrow<T>(/* private fields */);Expand description
A mutable borrow, with a synthetic lifetime.
Correct usage of this borrow (e.g. non-aliasing) is checked by respecting the contracts of the associated functions.
Objects of this type may only be constructed in ghost.
Implementations§
Source§impl<T> FullBorrow<T>
impl<T> FullBorrow<T>
Sourcepub fn fin(self) -> T
pub fn fin(self) -> T
The final value of this borrow.
Also accessible with the final operator ^.
logic(open, prophetic)
^selfSourcepub fn new(
x: Ghost<T>,
lft: Snapshot<Lifetime>,
) -> (Ghost<Self>, Ghost<EndBorrow<T>>)
pub fn new( x: Ghost<T>, lft: Snapshot<Lifetime>, ) -> (Ghost<Self>, Ghost<EndBorrow<T>>)
Create a new full borrow of the value x.
Note that it also gives back a value of type EndBorrow, that
can be used to get back the original value once the lifetime of the
borrow has ended.
§in Rustbelt
This is the ‘LftL-borrow’ rule.
terminates
ghost
ensures
result.0.cur() == *xensures
result.0.lft() == *lft && result.1.lft() == *lftensures
^result.0 == ^result.1Sourcepub fn borrow<'a>(&'a self, token: &'a LifetimeToken) -> &'a T
pub fn borrow<'a>(&'a self, token: &'a LifetimeToken) -> &'a T
Get an immutable borrow to read the value.
The token object ensures that the lifetime of the FullBorrow has not
expired yet.
terminates
ghost
requires
self.lft() == token.lft()ensures
*result == self.cur()Sourcepub fn borrow_mut<'a>(&'a mut self, token: &'a LifetimeToken) -> &'a mut T
pub fn borrow_mut<'a>(&'a mut self, token: &'a LifetimeToken) -> &'a mut T
Get a mutable borrow to write into the value.
The token object ensures that the lifetime of the FullBorrow has not
expired yet.
Functionally equivalent to a reborrow.
§In Rustbelt
This is the rule ‘LftL-bor-unnest’ (but mixed between syntactic and synthetic lifetimes).
terminates
ghost
requires
self.lft() == token.lft()ensures
(^self).lft() == self.lft()ensures
^^self == ^*selfensures
(*self).cur() == *result && (^self).cur() == ^resultSourcepub fn map<U, F>(self, f: F, token: &LifetimeToken) -> FullBorrow<U>
pub fn map<U, F>(self, f: F, token: &LifetimeToken) -> FullBorrow<U>
Change the type of a full borrow.
This is similar to std::cell::RefMut::map.
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T, res: &mut U> *b == self.cur() && ^b == ^self && *res == result.cur() && ^res == ^result && f.postcondition_once((b,), res)
ensures
result.lft() == self.lft()Source§impl<T> FullBorrow<(T,)>
impl<T> FullBorrow<(T,)>
Sourcepub fn split(self) -> (FullBorrow<T>,)
pub fn split(self) -> (FullBorrow<T>,)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).$idxSource§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_1<T, F>(self, f: F, token: &LifetimeToken) -> (FullBorrow<T>,)
pub fn map_split_1<T, F>(self, f: F, token: &LifetimeToken) -> (FullBorrow<T>,)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()Source§impl<U, T> FullBorrow<(U, T)>
impl<U, T> FullBorrow<(U, T)>
Sourcepub fn split(self) -> (FullBorrow<U>, FullBorrow<T>)
pub fn split(self) -> (FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_2<U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<U>, FullBorrow<T>)
pub fn map_split_2<U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<V, U, T> FullBorrow<(V, U, T)>
impl<V, U, T> FullBorrow<(V, U, T)>
Sourcepub fn split(self) -> (FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split(self) -> (FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_3<V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_3<V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<W, V, U, T> FullBorrow<(W, V, U, T)>
impl<W, V, U, T> FullBorrow<(W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_4<W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_4<W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<X, W, V, U, T> FullBorrow<(X, W, V, U, T)>
impl<X, W, V, U, T> FullBorrow<(X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_5<X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_5<X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<Y, X, W, V, U, T> FullBorrow<(Y, X, W, V, U, T)>
impl<Y, X, W, V, U, T> FullBorrow<(Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_6<Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_6<Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<Z, Y, X, W, V, U, T> FullBorrow<(Z, Y, X, W, V, U, T)>
impl<Z, Y, X, W, V, U, T> FullBorrow<(Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_7<Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_7<Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<A, Z, Y, X, W, V, U, T> FullBorrow<(A, Z, Y, X, W, V, U, T)>
impl<A, Z, Y, X, W, V, U, T> FullBorrow<(A, Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_8<A, Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_8<A, Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<B, A, Z, Y, X, W, V, U, T> FullBorrow<(B, A, Z, Y, X, W, V, U, T)>
impl<B, A, Z, Y, X, W, V, U, T> FullBorrow<(B, A, Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_9<B, A, Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_9<B, A, Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(C, B, A, Z, Y, X, W, V, U, T)>
impl<C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(C, B, A, Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_10<C, B, A, Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_10<C, B, A, Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<D, C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(D, C, B, A, Z, Y, X, W, V, U, T)>
impl<D, C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(D, C, B, A, Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_11<D, C, B, A, Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_11<D, C, B, A, Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()Source§impl<E, D, C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(E, D, C, B, A, Z, Y, X, W, V, U, T)>
impl<E, D, C, B, A, Z, Y, X, W, V, U, T> FullBorrow<(E, D, C, B, A, Z, Y, X, W, V, U, T)>
Sourcepub fn split(
self,
) -> (FullBorrow<E>, FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn split( self, ) -> (FullBorrow<E>, FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).ensures
result.$idx.lft() == self.lft()ensures
result.$idx.cur() == self.cur().$idx && ^result.$idx == (^self).Source§impl<T0> FullBorrow<T0>
impl<T0> FullBorrow<T0>
Sourcepub fn map_split_12<E, D, C, B, A, Z, Y, X, W, V, U, T, F>(
self,
f: F,
token: &LifetimeToken,
) -> (FullBorrow<E>, FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
pub fn map_split_12<E, D, C, B, A, Z, Y, X, W, V, U, T, F>( self, f: F, token: &LifetimeToken, ) -> (FullBorrow<E>, FullBorrow<D>, FullBorrow<C>, FullBorrow<B>, FullBorrow<A>, FullBorrow<Z>, FullBorrow<Y>, FullBorrow<X>, FullBorrow<W>, FullBorrow<V>, FullBorrow<U>, FullBorrow<T>)
terminates
ghost
requires
self.lft() == token.lft()requires
forall<b: &mut T0> *b == self.cur() && ^b == ^self ==> f.precondition((b,))
ensures
exists<b: &mut T0, res: ($(&mut $name,)+)> *b == self.cur() && ^b == ^self && $(*res.$idx == result.$idx.cur() && ^res.$idx == ^result.$idx &&)+ f.postcondition_once((b,), res)
ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()ensures
result.$idx.lft() == self.lft()