Nested

Struct Nested 

Source
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.

These are useful as parameters to pass to PartialRef’s part functions.

Source§

type Output = Nested<Nested<Outer, Inner>, NewInnerPart>

The resulting type after applying the | operator.
Source§

fn bitor(self, _rhs: NewInnerPart) -> Self::Output

Performs the | operation. Read more
Source§

impl<Outer: Default, Inner: Default> Default for Nested<Outer, Inner>

Source§

fn default() -> Nested<Outer, Inner>

Returns the “default value” for a type. Read more
Source§

impl<Outer, OuterFieldType, Inner> Part for Nested<Outer, Inner>
where Outer: Part<PartType = Field<OuterFieldType>>, Inner: Part, OuterFieldType: ?Sized + HasPart<Inner> + PartialRefTarget<RawTarget = OuterFieldType>,

A nested part is itself a part.

Source§

type PartType = <Inner as Part>::PartType

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.

Source§

type Remainder = Const<ContainingPart, Reference>

The partial reference left after plucking.
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.

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

The partial reference left after plucking.
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.

This leaves all other subparts in the remaining reference.

Source§

type Remainder = <<ContainingFieldType as SplitIntoParts<'a, ContainingPart, Reference>>::ResultMut as PluckMut<'a, Nested<PluckedOuter, PluckedInner>, Index>>::Remainder

The partial reference left after plucking.
Source§

impl<Outer, Inner, OuterS, InnerS> PartSpec<Nested<OuterS, InnerS>> for Nested<Outer, Inner>
where Outer: PartSpec<OuterS>, Inner: PartSpec<InnerS>,

Auto Trait Implementations§

§

impl<Outer, Inner> Freeze for Nested<Outer, Inner>
where Outer: Freeze, Inner: Freeze,

§

impl<Outer, Inner> RefUnwindSafe for Nested<Outer, Inner>
where Outer: RefUnwindSafe, Inner: RefUnwindSafe,

§

impl<Outer, Inner> Send for Nested<Outer, Inner>
where Outer: Send, Inner: Send,

§

impl<Outer, Inner> Sync for Nested<Outer, Inner>
where Outer: Sync, Inner: Sync,

§

impl<Outer, Inner> Unpin for Nested<Outer, Inner>
where Outer: Unpin, Inner: Unpin,

§

impl<Outer, Inner> UnwindSafe for Nested<Outer, Inner>
where Outer: UnwindSafe, Inner: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<Reference, Outer, OuterFieldType, Inner> HasPart<Nested<Outer, Inner>> for Reference
where Reference: HasPart<Outer> + ?Sized, Outer: Part<PartType = Field<OuterFieldType>>, Inner: Part, OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,

Source§

unsafe fn part_ptr( ptr: *const <Reference as PartialRefTarget>::RawTarget, ) -> <<Inner as Part>::PartType as PartType>::Ptr

Given a constant pointer to a target, produce a constant pointer to a part of it. Read more
Source§

unsafe fn part_ptr_mut( ptr: *mut <Reference as PartialRefTarget>::RawTarget, ) -> <<Inner as Part>::PartType as PartType>::PtrMut

Given a mutable pointer to a target, produce a mutable pointer to a part of it. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<NestedPart, Outer, Inner, OuterFieldType, Index> ContainsNestedPart<Nested<Outer, Inner>, IndexNext<Index>> for NestedPart
where NestedPart: Part + ContainsNestedPart<Outer, Index>, Inner: Part, Outer: Part<PartType = Field<OuterFieldType>>, OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,

Source§

impl<NestedPart> ContainsNestedPart<NestedPart, IndexHere> for NestedPart
where NestedPart: Part,