Trait keypath::Keyable [−][src]
pub trait Keyable: RawKeyable { type Mirror; fn mirror() -> Self::Mirror; fn try_any_at_path(
&self,
path: impl AsRef<[PathComponent]>
) -> Result<&dyn Any, FieldError> { ... } fn try_any_at_path_mut(
&mut self,
path: impl AsRef<[PathComponent]>
) -> Result<&mut dyn Any, FieldError> { ... } fn item_at_path<T>(&self, path: &KeyPath<Self, T>) -> &T { ... } fn item_at_path_mut<T>(&mut self, path: &KeyPath<Self, T>) -> &mut T { ... } }
Expand description
A trait for types that can be indexed with keypaths.
Associated Types
Required methods
Provided methods
fn try_any_at_path(
&self,
path: impl AsRef<[PathComponent]>
) -> Result<&dyn Any, FieldError>
fn try_any_at_path(
&self,
path: impl AsRef<[PathComponent]>
) -> Result<&dyn Any, FieldError>
Attempt to traverse a series of PathComponent
s, returning an &dyn Any
if successful.
fn try_any_at_path_mut(
&mut self,
path: impl AsRef<[PathComponent]>
) -> Result<&mut dyn Any, FieldError>
fn try_any_at_path_mut(
&mut self,
path: impl AsRef<[PathComponent]>
) -> Result<&mut dyn Any, FieldError>
Attempt to traverse a series of PathComponent
s, returning an &mut dyn Any
if successful.
fn item_at_path<T>(&self, path: &KeyPath<Self, T>) -> &T
fn item_at_path<T>(&self, path: &KeyPath<Self, T>) -> &T
Get a reference to the value at the provided path.
You generally won’t need to call this, since you can use [index]
syntax instead.
Assuming the path was constructed with the keypath!
macro, this
method will not fail.
Panics
I lied, it will fail if you provide an index into a collection and that item does not exist.
fn item_at_path_mut<T>(&mut self, path: &KeyPath<Self, T>) -> &mut T
fn item_at_path_mut<T>(&mut self, path: &KeyPath<Self, T>) -> &mut T
Get a mutable reference to the value at the provided path.
You generally won’t need to call this, since you can use [index]
syntax instead.
Assuming the path was constructed with the keypath!
macro, this
method will not fail.
Panics
I lied, it will fail if you provide an index into a collection and that item does not exist.
Implementations on Foreign Types
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable> Keyable for (A, B, C, D, E)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable> Keyable for (A, B, C, D, E)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable> Keyable for (A, B, C, D, E, F)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable> Keyable for (A, B, C, D, E, F)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable> Keyable for (A, B, C, D, E, F, G)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable> Keyable for (A, B, C, D, E, F, G)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable> Keyable for (A, B, C, D, E, F, G, H)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable> Keyable for (A, B, C, D, E, F, G, H)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable, K: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J, K)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable, K: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J, K)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable, K: RawKeyable, L: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J, K, L)
impl<A: RawKeyable, B: RawKeyable, C: RawKeyable, D: RawKeyable, E: RawKeyable, F: RawKeyable, G: RawKeyable, H: RawKeyable, I: RawKeyable, J: RawKeyable, K: RawKeyable, L: RawKeyable> Keyable for (A, B, C, D, E, F, G, H, I, J, K, L)