pub struct Nested<Outer, Inner>(/* private fields */);Expand description
A nested part.
A nested part can be constructed from an outer part and an inner part. The outer part must be a
Field part, and the field’s type must be a PartialRefTarget having the the inner part
(HasPart).
When nesting multiple times, the nested part should always be the outer part. This isn’t enforced, but some operations are only supported in that case.
Trait Implementations§
Source§impl<NewInnerPart: Part, Outer: Part, Inner: Part> BitOr<NewInnerPart> for Nested<Outer, Inner>
Create default values for nested parts.
impl<NewInnerPart: Part, Outer: Part, Inner: Part> BitOr<NewInnerPart> for Nested<Outer, Inner>
Create default values for nested parts.
These are useful as parameters to pass to PartialRef’s part functions.
Source§impl<Outer, OuterFieldType, Inner> Part for Nested<Outer, Inner>
A nested part is itself a part.
impl<Outer, OuterFieldType, Inner> Part for Nested<Outer, Inner>
A nested part is itself a part.
Source§impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckConst<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Const<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a constant nested subpart of the constant first part.
impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckConst<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Const<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a constant nested subpart of the constant first part.
Source§impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckConst<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Mut<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a constant nested subpart of the mutable first part.
impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckConst<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Mut<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a constant nested subpart of the mutable first part.
This leaves all other subparts as mutable in the remaining reference.
Source§type Remainder = <<ContainingFieldType as SplitIntoParts<'a, ContainingPart, Reference>>::ResultMut as PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>>::Remainder
type Remainder = <<ContainingFieldType as SplitIntoParts<'a, ContainingPart, Reference>>::ResultMut as PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>>::Remainder
Source§impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckMut<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Mut<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckMut<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a mutable nested subpart of the mutable first part.
impl<'a, ContainingPart, PluckedOuter, PluckedInner, Reference, NestedPartIndex, Index, OuterFieldType, ContainingFieldType> PluckMut<'a, Nested<PluckedOuter, PluckedInner>, IndexSplit<NestedPartIndex, Index>> for Mut<ContainingPart, Reference>where
PluckedOuter: Part<PartType = Field<OuterFieldType>>,
PluckedInner: Part,
ContainingPart: Part<PartType = Field<ContainingFieldType>> + ContainsNestedPart<PluckedOuter, NestedPartIndex>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference> + ?Sized,
ContainingFieldType::ResultMut: PluckMut<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized + HasPart<PluckedInner> + PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
(internal) Pluck a mutable nested subpart of the mutable first part.
This leaves all other subparts in the remaining reference.