Skip to main content

ChainExt

Trait ChainExt 

Source
pub trait ChainExt<R, V, Root, Value, MutRoot, MutValue> {
    // Required methods
    fn then_lock<Lock, Mid, V2, LockValue, MidValue, Value2, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>(
        self,
        lock_kp: LockKp<V, Lock, Mid, V2, Value, LockValue, MidValue, Value2, MutValue, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>,
    ) -> KpThenLockKp<R, V, V2, Root, Value, Value2, MutRoot, MutValue, MutValue2, Self, LockKp<V, Lock, Mid, V2, Value, LockValue, MidValue, Value2, MutValue, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>>
       where V: 'static + Clone,
             V2: 'static,
             Value: Borrow<V>,
             Value2: Borrow<V2>,
             MutValue: BorrowMut<V>,
             MutValue2: BorrowMut<V2>,
             LockValue: Borrow<Lock>,
             MidValue: Borrow<Mid>,
             MutLock: BorrowMut<Lock>,
             MutMid: BorrowMut<Mid>,
             G1: Fn(Value) -> Option<LockValue>,
             S1: Fn(MutValue) -> Option<MutLock>,
             L: LockAccess<Lock, MidValue> + LockAccess<Lock, MutMid>,
             G2: Fn(MidValue) -> Option<Value2>,
             S2: Fn(MutMid) -> Option<MutValue2>,
             Self: Sized;
    fn then_async<AsyncKp>(
        self,
        async_kp: AsyncKp,
    ) -> KpThenAsyncKeyPath<R, V, <AsyncKp::Value as KeyPathValueTarget>::Target, Root, Value, AsyncKp::Value, MutRoot, MutValue, AsyncKp::MutValue, Self, AsyncKp>
       where V: 'static,
             Value: Borrow<V>,
             MutValue: BorrowMut<V>,
             AsyncKp: AsyncKeyPathLike<Value, MutValue>,
             AsyncKp::Value: KeyPathValueTarget + Borrow<<AsyncKp::Value as KeyPathValueTarget>::Target>,
             AsyncKp::MutValue: BorrowMut<<AsyncKp::Value as KeyPathValueTarget>::Target>,
             <AsyncKp::Value as KeyPathValueTarget>::Target: 'static,
             Self: Sized;
}

Required Methods§

Source

fn then_lock<Lock, Mid, V2, LockValue, MidValue, Value2, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>( self, lock_kp: LockKp<V, Lock, Mid, V2, Value, LockValue, MidValue, Value2, MutValue, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>, ) -> KpThenLockKp<R, V, V2, Root, Value, Value2, MutRoot, MutValue, MutValue2, Self, LockKp<V, Lock, Mid, V2, Value, LockValue, MidValue, Value2, MutValue, MutLock, MutMid, MutValue2, G1, S1, L, G2, S2>>
where V: 'static + Clone, V2: 'static, Value: Borrow<V>, Value2: Borrow<V2>, MutValue: BorrowMut<V>, MutValue2: BorrowMut<V2>, LockValue: Borrow<Lock>, MidValue: Borrow<Mid>, MutLock: BorrowMut<Lock>, MutMid: BorrowMut<Mid>, G1: Fn(Value) -> Option<LockValue>, S1: Fn(MutValue) -> Option<MutLock>, L: LockAccess<Lock, MidValue> + LockAccess<Lock, MutMid>, G2: Fn(MidValue) -> Option<Value2>, S2: Fn(MutMid) -> Option<MutValue2>, Self: Sized,

Chain with a sync crate::lock::LockKp. Use .get(root) / .get_mut(root) on the returned keypath.

Source

fn then_async<AsyncKp>( self, async_kp: AsyncKp, ) -> KpThenAsyncKeyPath<R, V, <AsyncKp::Value as KeyPathValueTarget>::Target, Root, Value, AsyncKp::Value, MutRoot, MutValue, AsyncKp::MutValue, Self, AsyncKp>
where V: 'static, Value: Borrow<V>, MutValue: BorrowMut<V>, AsyncKp: AsyncKeyPathLike<Value, MutValue>, AsyncKp::Value: KeyPathValueTarget + Borrow<<AsyncKp::Value as KeyPathValueTarget>::Target>, AsyncKp::MutValue: BorrowMut<<AsyncKp::Value as KeyPathValueTarget>::Target>, <AsyncKp::Value as KeyPathValueTarget>::Target: 'static, Self: Sized,

Chain with an async keypath (e.g. crate::async_lock::AsyncLockKp). Use .get(&root).await on the returned keypath.

Implementors§

Source§

impl<R, V, Root, Value, MutRoot, MutValue, G, S> ChainExt<R, V, Root, Value, MutRoot, MutValue> for Kp<R, V, Root, Value, MutRoot, MutValue, G, S>
where Root: Borrow<R>, Value: Borrow<V>, MutRoot: BorrowMut<R>, MutValue: BorrowMut<V>, G: Fn(Root) -> Option<Value>, S: Fn(MutRoot) -> Option<MutValue>,