pub struct FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>where
ReadFn: for<'r> Fn(&'r Root) -> Option<&'r Value> + 'static,
WriteFn: for<'r> Fn(&'r mut Root) -> Option<&'r mut Value> + 'static,
OwnedFn: Fn(Root) -> Option<Value> + 'static,{ /* private fields */ }Expand description
FailableCombinedKeyPath - A keypath that supports readable, writable, and owned access patterns
This keypath type combines the functionality of OptionalKeyPath, WritableOptionalKeyPath, and adds owned access. It’s useful when you need all three access patterns for the same field.
Implementations§
Source§impl<Root, Value, ReadFn, WriteFn, OwnedFn> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>where
ReadFn: for<'r> Fn(&'r Root) -> Option<&'r Value> + 'static,
WriteFn: for<'r> Fn(&'r mut Root) -> Option<&'r mut Value> + 'static,
OwnedFn: Fn(Root) -> Option<Value> + 'static,
impl<Root, Value, ReadFn, WriteFn, OwnedFn> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>where
ReadFn: for<'r> Fn(&'r Root) -> Option<&'r Value> + 'static,
WriteFn: for<'r> Fn(&'r mut Root) -> Option<&'r mut Value> + 'static,
OwnedFn: Fn(Root) -> Option<Value> + 'static,
Sourcepub fn new(
readable: ReadFn,
writable: WriteFn,
owned: OwnedFn,
) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
pub fn new( readable: ReadFn, writable: WriteFn, owned: OwnedFn, ) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
Create a new FailableCombinedKeyPath with all three access patterns
Sourcepub fn get<'r>(&self, root: &'r Root) -> Option<&'r Value>
pub fn get<'r>(&self, root: &'r Root) -> Option<&'r Value>
Get an immutable reference to the value (readable access)
Sourcepub fn get_mut<'r>(&self, root: &'r mut Root) -> Option<&'r mut Value>
pub fn get_mut<'r>(&self, root: &'r mut Root) -> Option<&'r mut Value>
Get a mutable reference to the value (writable access)
Sourcepub fn get_failable_owned(&self, root: Root) -> Option<Value>
pub fn get_failable_owned(&self, root: Root) -> Option<Value>
Get an owned value (owned access) - consumes the root
Sourcepub fn to_optional(self) -> OptionalKeyPath<Root, Value, ReadFn>
pub fn to_optional(self) -> OptionalKeyPath<Root, Value, ReadFn>
Convert to OptionalKeyPath (loses writable and owned capabilities)
Sourcepub fn to_writable_optional(
self,
) -> WritableOptionalKeyPath<Root, Value, WriteFn>
pub fn to_writable_optional( self, ) -> WritableOptionalKeyPath<Root, Value, WriteFn>
Convert to WritableOptionalKeyPath (loses owned capability)
Sourcepub fn then<SubValue, SubReadFn, SubWriteFn, SubOwnedFn>(
self,
next: FailableCombinedKeyPath<Value, SubValue, SubReadFn, SubWriteFn, SubOwnedFn>,
) -> FailableCombinedKeyPath<Root, SubValue, impl for<'r> Fn(&'r Root) + 'static, impl for<'r> Fn(&'r mut Root) + 'static, impl Fn(Root) + 'static>where
SubReadFn: for<'r> Fn(&'r Value) -> Option<&'r SubValue> + 'static,
SubWriteFn: for<'r> Fn(&'r mut Value) -> Option<&'r mut SubValue> + 'static,
SubOwnedFn: Fn(Value) -> Option<SubValue> + 'static,
ReadFn: 'static,
WriteFn: 'static,
OwnedFn: 'static,
Value: 'static,
Root: 'static,
SubValue: 'static,
pub fn then<SubValue, SubReadFn, SubWriteFn, SubOwnedFn>(
self,
next: FailableCombinedKeyPath<Value, SubValue, SubReadFn, SubWriteFn, SubOwnedFn>,
) -> FailableCombinedKeyPath<Root, SubValue, impl for<'r> Fn(&'r Root) + 'static, impl for<'r> Fn(&'r mut Root) + 'static, impl Fn(Root) + 'static>where
SubReadFn: for<'r> Fn(&'r Value) -> Option<&'r SubValue> + 'static,
SubWriteFn: for<'r> Fn(&'r mut Value) -> Option<&'r mut SubValue> + 'static,
SubOwnedFn: Fn(Value) -> Option<SubValue> + 'static,
ReadFn: 'static,
WriteFn: 'static,
OwnedFn: 'static,
Value: 'static,
Root: 'static,
SubValue: 'static,
Compose this keypath with another FailableCombinedKeyPath Returns a new FailableCombinedKeyPath that chains both keypaths
Sourcepub fn chain_optional<SubValue, SubReadFn>(
self,
next: OptionalKeyPath<Value, SubValue, SubReadFn>,
) -> FailableCombinedKeyPath<Root, SubValue, impl for<'r> Fn(&'r Root) + 'static, impl for<'r> Fn(&'r mut Root) + 'static, impl Fn(Root) + 'static>where
SubReadFn: for<'r> Fn(&'r Value) -> Option<&'r SubValue> + 'static,
ReadFn: 'static,
WriteFn: 'static,
OwnedFn: 'static,
Value: 'static,
Root: 'static,
SubValue: 'static,
pub fn chain_optional<SubValue, SubReadFn>(
self,
next: OptionalKeyPath<Value, SubValue, SubReadFn>,
) -> FailableCombinedKeyPath<Root, SubValue, impl for<'r> Fn(&'r Root) + 'static, impl for<'r> Fn(&'r mut Root) + 'static, impl Fn(Root) + 'static>where
SubReadFn: for<'r> Fn(&'r Value) -> Option<&'r SubValue> + 'static,
ReadFn: 'static,
WriteFn: 'static,
OwnedFn: 'static,
Value: 'static,
Root: 'static,
SubValue: 'static,
Compose with OptionalKeyPath (readable only) Returns a FailableCombinedKeyPath that uses the readable from OptionalKeyPath and creates dummy writable/owned closures that return None
Source§impl FailableCombinedKeyPath<(), (), fn(&()) -> Option<&()>, fn(&mut ()) -> Option<&mut ()>, fn(()) -> Option<()>>
impl FailableCombinedKeyPath<(), (), fn(&()) -> Option<&()>, fn(&mut ()) -> Option<&mut ()>, fn(()) -> Option<()>>
Sourcepub fn failable_combined<Root, Value, ReadFn, WriteFn, OwnedFn>(
readable: ReadFn,
writable: WriteFn,
owned: OwnedFn,
) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>where
ReadFn: for<'r> Fn(&'r Root) -> Option<&'r Value> + 'static,
WriteFn: for<'r> Fn(&'r mut Root) -> Option<&'r mut Value> + 'static,
OwnedFn: Fn(Root) -> Option<Value> + 'static,
pub fn failable_combined<Root, Value, ReadFn, WriteFn, OwnedFn>(
readable: ReadFn,
writable: WriteFn,
owned: OwnedFn,
) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>where
ReadFn: for<'r> Fn(&'r Root) -> Option<&'r Value> + 'static,
WriteFn: for<'r> Fn(&'r mut Root) -> Option<&'r mut Value> + 'static,
OwnedFn: Fn(Root) -> Option<Value> + 'static,
Create a FailableCombinedKeyPath with all three access patterns
Trait Implementations§
Source§impl<Root, Value, ReadFn, WriteFn, OwnedFn> Clone for FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
impl<Root, Value, ReadFn, WriteFn, OwnedFn> Clone for FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
Source§fn clone(
&self,
) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
fn clone( &self, ) -> FailableCombinedKeyPath<Root, Value, ReadFn, WriteFn, OwnedFn>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more