usestd::any::Any;usesuper::FieldError;/// A trait for types that expose their properties via keypath.
////// All of the dynamism and traversal logic happens here; its split into a
/// separate trait for object safety.
pubtraitRawKeyable: 'static {fnas_any(&self)->&dyn Any;fnas_any_mut(&mutself)->&mut dyn Any;fnget_field(&self, ident:&[PathComponent])->Result<&dyn RawKeyable, FieldError>;fnget_field_mut(&mutself, ident:&[PathComponent])->Result<&mut dyn RawKeyable, FieldError>;}/// A component of a keypath.
#[derive(Debug, Clone, Copy)]pubenumPathComponent{/// An unnamed field, such as on a tuple or tuple struct
Unnamed(usize),/// A named field.
Named(&'staticstr),/// An index into a sequence, such as a vec.
IndexInt(usize),/// An index into a map with string keys.
IndexStr(&'staticstr),}