Struct partial_ref::Const
source · #[repr(transparent)]pub struct Const<Part, Reference> { /* private fields */ }
Expand description
A constant (immutable) part of a partial reference.
Trait Implementations
sourceimpl<SomePart, Reference: Copy> Clone for Const<SomePart, Reference>
impl<SomePart, Reference: Copy> Clone for Const<SomePart, Reference>
A reference containing just constant parts is safe to clone.
sourceimpl<'a, SomePart: Part, Reference: PartialRef<'a>> PartialRef<'a> for Const<SomePart, Reference>where
Reference::Target: HasPart<SomePart>,
impl<'a, SomePart: Part, Reference: PartialRef<'a>> PartialRef<'a> for Const<SomePart, Reference>where
Reference::Target: HasPart<SomePart>,
Extending a valid reference by a constant part is still a valid reference when the reference target has such a part.
type Target = <Reference as PartialRef<'a>>::Target
type Target = <Reference as PartialRef<'a>>::Target
The referenced type. Read more
sourceunsafe fn from_raw(
ptr: *mut <Self::Target as PartialRefTarget>::RawTarget
) -> Self
unsafe fn from_raw(
ptr: *mut <Self::Target as PartialRefTarget>::RawTarget
) -> Self
Create a partial reference from a raw pointer. Read more
sourcefn get_raw(&self) -> *mut <Self::Target as PartialRefTarget>::RawTarget
fn get_raw(&self) -> *mut <Self::Target as PartialRefTarget>::RawTarget
Access to the underlying raw pointer. Read more
sourcefn borrow<'b, BorrowedRef, SubsetIndex>(&'b mut self) -> BorrowedRefwhere
'a: 'b,
BorrowedRef: PartialRef<'a, Target = Self::Target>,
Self: HasSubset<'a, BorrowedRef, SubsetIndex>,
fn borrow<'b, BorrowedRef, SubsetIndex>(&'b mut self) -> BorrowedRefwhere
'a: 'b,
BorrowedRef: PartialRef<'a, Target = Self::Target>,
Self: HasSubset<'a, BorrowedRef, SubsetIndex>,
Partially re-borrows a partial reference. Read more
sourcefn part<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> &'a FieldTypewhere
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckConst<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
fn part<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> &'a FieldTypewhere
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckConst<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
Access a part of the referenced value. Read more
sourcefn part_mut<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> &'a mut FieldTypewhere
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckMut<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
fn part_mut<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> &'a mut FieldTypewhere
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckMut<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
Mutable access to a part of the referenced value. Read more
sourcefn split_borrow<'b, BorrowedRef, SubsetIndex>(
&'b mut self
) -> (BorrowedRef, Self::Remainder)where
'a: 'b,
BorrowedRef: PartialRef<'a, Target = Self::Target>,
Self: HasSubset<'a, BorrowedRef, SubsetIndex>,
fn split_borrow<'b, BorrowedRef, SubsetIndex>(
&'b mut self
) -> (BorrowedRef, Self::Remainder)where
'a: 'b,
BorrowedRef: PartialRef<'a, Target = Self::Target>,
Self: HasSubset<'a, BorrowedRef, SubsetIndex>,
Partially re-borrows a partial reference, splitting off the remaining parts. Read more
sourcefn split_part<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> (&'a FieldType, Self::Remainder)where
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckConst<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
fn split_part<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> (&'a FieldType, Self::Remainder)where
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckConst<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
Access a part of the referenced value, splitting off the remaining parts. Read more
sourcefn split_part_mut<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> (&'a mut FieldType, Self::Remainder)where
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckMut<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
fn split_part_mut<'b, FieldPart, PartIndex, FieldType>(
&'b mut self,
_part: FieldPart
) -> (&'a mut FieldType, Self::Remainder)where
'a: 'b,
FieldType: ?Sized,
FieldPart: Part<PartType = Field<FieldType>>,
Self: PluckMut<'a, FieldPart, PartIndex>,
Self::Target: HasPart<FieldPart> + 'a,
Mutable access to a part of the referenced value, splitting off the remaining parts. Read more
sourceimpl<'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>>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference>,
ContainingFieldType: ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized,
OuterFieldType: HasPart<PluckedInner>,
OuterFieldType: PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
ContainingPart: ContainsNestedPart<PluckedOuter, NestedPartIndex>,
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>>,
ContainingFieldType: SplitIntoParts<'a, ContainingPart, Reference>,
ContainingFieldType: ?Sized,
ContainingFieldType::ResultMut: PluckConst<'a, Nested<PluckedOuter, PluckedInner>, Index>,
OuterFieldType: ?Sized,
OuterFieldType: HasPart<PluckedInner>,
OuterFieldType: PartialRefTarget<RawTarget = OuterFieldType>,
Reference: PartialRef<'a>,
Reference::Target: HasPart<ContainingPart>,
ContainingPart: ContainsNestedPart<PluckedOuter, NestedPartIndex>,
(internal) Pluck a constant nested subpart of the constant first part.
sourceimpl<'a, PluckedPart, Reference> PluckConst<'a, PluckedPart, IndexHere> for Const<PluckedPart, Reference>where
PluckedPart: Part,
Reference: PartialRef<'a>,
Reference::Target: HasPart<PluckedPart>,
impl<'a, PluckedPart, Reference> PluckConst<'a, PluckedPart, IndexHere> for Const<PluckedPart, Reference>where
PluckedPart: Part,
Reference: PartialRef<'a>,
Reference::Target: HasPart<PluckedPart>,
(internal) Plucks the outermost constant part.
sourceimpl<'a, PluckedPart, SkippedPart, Reference, Index> PluckConst<'a, PluckedPart, IndexNext<Index>> for Const<SkippedPart, Reference>where
PluckedPart: Part,
SkippedPart: Part,
Reference::Target: HasPart<PluckedPart>,
Reference::Target: HasPart<SkippedPart>,
Reference: PluckConst<'a, PluckedPart, Index>,
impl<'a, PluckedPart, SkippedPart, Reference, Index> PluckConst<'a, PluckedPart, IndexNext<Index>> for Const<SkippedPart, Reference>where
PluckedPart: Part,
SkippedPart: Part,
Reference::Target: HasPart<PluckedPart>,
Reference::Target: HasPart<SkippedPart>,
Reference: PluckConst<'a, PluckedPart, Index>,
(internal) Skips the constant first part while plucking a constant part.
type Remainder = Const<SkippedPart, <Reference as PluckConst<'a, PluckedPart, Index>>::Remainder>
type Remainder = Const<SkippedPart, <Reference as PluckConst<'a, PluckedPart, Index>>::Remainder>
The partial reference left after plucking.
sourceimpl<'a, PluckedPart, SkippedPart, Reference, Index> PluckMut<'a, PluckedPart, IndexNext<Index>> for Const<SkippedPart, Reference>where
PluckedPart: Part,
SkippedPart: Part,
Reference::Target: HasPart<PluckedPart>,
Reference::Target: HasPart<SkippedPart>,
Reference: PluckMut<'a, PluckedPart, Index>,
impl<'a, PluckedPart, SkippedPart, Reference, Index> PluckMut<'a, PluckedPart, IndexNext<Index>> for Const<SkippedPart, Reference>where
PluckedPart: Part,
SkippedPart: Part,
Reference::Target: HasPart<PluckedPart>,
Reference::Target: HasPart<SkippedPart>,
Reference: PluckMut<'a, PluckedPart, Index>,
(internal) Skips the constant first part while plucking a mutable part.
impl<SomePart, Reference: Copy> Copy for Const<SomePart, Reference>
A reference containing just constant parts is safe to clone.
Auto Trait Implementations
impl<Part, Reference> RefUnwindSafe for Const<Part, Reference>where
Part: RefUnwindSafe,
Reference: RefUnwindSafe,
impl<Part, Reference> Send for Const<Part, Reference>where
Part: Send,
Reference: Send,
impl<Part, Reference> Sync for Const<Part, Reference>where
Part: Sync,
Reference: Sync,
impl<Part, Reference> Unpin for Const<Part, Reference>where
Part: Unpin,
Reference: Unpin,
impl<Part, Reference> UnwindSafe for Const<Part, Reference>where
Part: UnwindSafe,
Reference: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Reference, Outer, OuterFieldType, Inner> HasPart<Nested<Outer, Inner>> for Referencewhere
Reference: HasPart<Outer> + ?Sized,
Outer: Part<PartType = Field<OuterFieldType>>,
Inner: Part,
OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,
impl<Reference, Outer, OuterFieldType, Inner> HasPart<Nested<Outer, Inner>> for Referencewhere
Reference: HasPart<Outer> + ?Sized,
Outer: Part<PartType = Field<OuterFieldType>>,
Inner: Part,
OuterFieldType: HasPart<Inner, RawTarget = OuterFieldType> + PartialRefTarget + ?Sized,
sourceunsafe fn part_ptr(
ptr: *const <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::Ptr
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.
sourceunsafe fn part_ptr_mut(
ptr: *mut <Reference as PartialRefTarget>::RawTarget
) -> <<Inner as Part>::PartType as PartType>::PtrMut
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.