Struct TStr

Source
pub struct TStr<T>(/* private fields */);
Expand description

Type-level string,used for identifiers in field paths.

This type is always zero sized.

This cannot be converted to a &'static str constant (if you can figure out a cheap way to do that please create an issue/pull request).

§Semver concerns

The private __TS type appears as a type argument of TStr in the output of macros from this crate, the __TS type must not be used by name outside of the structural and structural_derive crates.

Direct use of the __TS type will cause compilation errors whenever any other crate uses the “use_const_str” cargo feature, which changes __TS to use const generics to improve error messages.

Also,using the “use_const_str” feature to use the __TS type by name wouldn’t protect from breakage, since other crates can use the “disable_const_str” feature to disable const generics (this feature is useful to work around bugs in const generics).

§TStr type

You can get a TStr type (to use as a type argument) with the TS macro, which takes a string literal/ident/integer as input.

§TStr construction

TStr<_> can be constructed with:

  • the ts macro,which takes a string literal/ident/integer as input.

  • the fp macro,when a single string literal/ident/integer in passed, prefer using ts if you want a TStr to always be constructed, since fp can produce other types depending on the arguments.

  • the NEW inherent associated constant.

  • The <TStr<_> as ConstDefault>::DEFAULT associated constant.

Examples:

  • ts!(foo): TStr equivalent of “foo”

  • ts!("bar"): TStr equivalent of “bar”

  • ts!(1): TStr equivalent of “1”

  • ts!(100): TStr equivalent of “100”

  • fp!(foo): TStr equivalent of “foo”

  • fp!("bar"): TStr equivalent of “bar”

  • fp!("@me"): TStr equivalent of “@me”

  • fp!(100): TStr equivalent of “100”

  • <TS!(0)>::NEW: TStr equivalent of “0”

  • <TS!(0)>::DEFAULT: TStr equivalent of “0” (requires importing the ConstDefault trait)

  • <TS!("hello")>::NEW: TStr equivalent of “hello”

  • <TS!(world)>::NEW: TStr equivalent of “world”

  • <TS!(100)>::NEW: TStr equivalent of “100”

§Example

For an example of constructing TStr using the ts macro, and constructing other field paths with it, you can look in the docs for the ts macro.

Implementations§

Source§

impl<T> TStr<T>

Source

pub const NEW: Self

Constructs the TStr.

Source§

impl<T> TStr<T>

Source

pub const fn into_path(self) -> NestedFieldPath<(Self,)>

Constructs a NestedFieldPath from this.

Source

pub const fn into_set(self) -> FieldPathSet<(Self,), UniquePaths>

Constructs a FieldPathSet from this.

Trait Implementations§

Source§

impl<T> Clone for TStr<T>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> ConstDefault for TStr<T>

Source§

const DEFAULT: Self

The default value for Self.
Source§

impl<T> Debug for TStr<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a, T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for &'a T
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty> + ?Sized,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<'a, T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for &'a mut T
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty> + ?Sized + 'a,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for Arc<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty> + ?Sized,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for Box<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty> + ?Sized,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for FieldCloner<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for ManuallyDrop<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<P, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for Pin<P>
where P::Target: GetVariantField<TStr<__V>, __F, Ty = __Ty> + Sized, P: Deref,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<P::Target, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for Rc<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty> + ?Sized,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantField<TStr<__V>, __F> for StrucWrapper<T>
where T: GetVariantField<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_( &self, vname: TStr<__V>, fname: __F, ) -> Option<&GetVariantFieldType<T, TStr<__V>, __F>>

Accesses the F field in the V variant by reference.
Source§

unsafe fn get_vfield_unchecked(&self, variant: V, field: F) -> &Self::Ty

Accesses the F field in the V variant by reference, without checking that the enum is currently the V variant. Read more
Source§

impl<'a, T, __V, __F, __Ty> GetVariantFieldMut<TStr<__V>, __F> for &'a mut T
where &'a mut T: Sized, T: GetVariantFieldMut<TStr<__V>, __F, Ty = __Ty> + ?Sized + 'a,

Source§

fn get_vfield_mut_(&mut self, vname: TStr<__V>, fname: __F) -> Option<&mut __Ty>

Accesses the F field in the V variant by mutable reference.
Source§

unsafe fn get_vfield_raw_mut_( this: *mut (), vname: TStr<__V>, fname: __F, ) -> Option<NonNull<__Ty>>
where Self: Sized,

Accesses the F field in the V variant by raw pointer. Read more
Source§

fn get_vfield_raw_mut_unchecked_fn(&self) -> GetFieldRawMutFn<__F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_unchecked method. Read more
Source§

fn get_vfield_raw_mut_fn(&self) -> GetVFieldRawMutFn<TStr<__V>, __F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_ method. Read more
Source§

unsafe fn get_vfield_mut_unchecked( &mut self, variant: V, field: F, ) -> &mut Self::Ty

Accesses the F field in the V variant by mutable reference, without checking that the enum is currently the V variant. Read more
Source§

unsafe fn get_vfield_raw_mut_unchecked(ptr: *mut (), field: F) -> *mut Self::Ty
where Self: Sized, V: ConstDefault,

Accesses the F field in the V variant by raw pointer, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantFieldMut<TStr<__V>, __F> for Box<T>
where Box<T>: Sized, T: GetVariantFieldMut<TStr<__V>, __F, Ty = __Ty> + ?Sized,

Source§

fn get_vfield_mut_(&mut self, vname: TStr<__V>, fname: __F) -> Option<&mut __Ty>

Accesses the F field in the V variant by mutable reference.
Source§

unsafe fn get_vfield_raw_mut_( this: *mut (), vname: TStr<__V>, fname: __F, ) -> Option<NonNull<__Ty>>
where Self: Sized,

Accesses the F field in the V variant by raw pointer. Read more
Source§

fn get_vfield_raw_mut_unchecked_fn(&self) -> GetFieldRawMutFn<__F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_unchecked method. Read more
Source§

fn get_vfield_raw_mut_fn(&self) -> GetVFieldRawMutFn<TStr<__V>, __F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_ method. Read more
Source§

unsafe fn get_vfield_mut_unchecked( &mut self, variant: V, field: F, ) -> &mut Self::Ty

Accesses the F field in the V variant by mutable reference, without checking that the enum is currently the V variant. Read more
Source§

unsafe fn get_vfield_raw_mut_unchecked(ptr: *mut (), field: F) -> *mut Self::Ty
where Self: Sized, V: ConstDefault,

Accesses the F field in the V variant by raw pointer, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantFieldMut<TStr<__V>, __F> for FieldCloner<T>
where FieldCloner<T>: Sized, T: GetVariantFieldMut<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_mut_(&mut self, vname: TStr<__V>, fname: __F) -> Option<&mut __Ty>

Accesses the F field in the V variant by mutable reference.
Source§

unsafe fn get_vfield_raw_mut_( this: *mut (), vname: TStr<__V>, fname: __F, ) -> Option<NonNull<__Ty>>
where Self: Sized,

Accesses the F field in the V variant by raw pointer. Read more
Source§

fn get_vfield_raw_mut_unchecked_fn(&self) -> GetFieldRawMutFn<__F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_unchecked method. Read more
Source§

fn get_vfield_raw_mut_fn(&self) -> GetVFieldRawMutFn<TStr<__V>, __F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_ method. Read more
Source§

unsafe fn get_vfield_mut_unchecked( &mut self, variant: V, field: F, ) -> &mut Self::Ty

Accesses the F field in the V variant by mutable reference, without checking that the enum is currently the V variant. Read more
Source§

unsafe fn get_vfield_raw_mut_unchecked(ptr: *mut (), field: F) -> *mut Self::Ty
where Self: Sized, V: ConstDefault,

Accesses the F field in the V variant by raw pointer, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantFieldMut<TStr<__V>, __F> for ManuallyDrop<T>
where ManuallyDrop<T>: Sized, T: GetVariantFieldMut<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_mut_(&mut self, vname: TStr<__V>, fname: __F) -> Option<&mut __Ty>

Accesses the F field in the V variant by mutable reference.
Source§

unsafe fn get_vfield_raw_mut_( this: *mut (), vname: TStr<__V>, fname: __F, ) -> Option<NonNull<__Ty>>
where Self: Sized,

Accesses the F field in the V variant by raw pointer. Read more
Source§

fn get_vfield_raw_mut_unchecked_fn(&self) -> GetFieldRawMutFn<__F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_unchecked method. Read more
Source§

fn get_vfield_raw_mut_fn(&self) -> GetVFieldRawMutFn<TStr<__V>, __F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_ method. Read more
Source§

unsafe fn get_vfield_mut_unchecked( &mut self, variant: V, field: F, ) -> &mut Self::Ty

Accesses the F field in the V variant by mutable reference, without checking that the enum is currently the V variant. Read more
Source§

unsafe fn get_vfield_raw_mut_unchecked(ptr: *mut (), field: F) -> *mut Self::Ty
where Self: Sized, V: ConstDefault,

Accesses the F field in the V variant by raw pointer, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> GetVariantFieldMut<TStr<__V>, __F> for StrucWrapper<T>
where StrucWrapper<T>: Sized, T: GetVariantFieldMut<TStr<__V>, __F, Ty = __Ty>,

Source§

fn get_vfield_mut_(&mut self, vname: TStr<__V>, fname: __F) -> Option<&mut __Ty>

Accesses the F field in the V variant by mutable reference.
Source§

unsafe fn get_vfield_raw_mut_( this: *mut (), vname: TStr<__V>, fname: __F, ) -> Option<NonNull<__Ty>>
where Self: Sized,

Accesses the F field in the V variant by raw pointer. Read more
Source§

fn get_vfield_raw_mut_unchecked_fn(&self) -> GetFieldRawMutFn<__F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_unchecked method. Read more
Source§

fn get_vfield_raw_mut_fn(&self) -> GetVFieldRawMutFn<TStr<__V>, __F, __Ty>

Gets a function pointer to the get_vfield_raw_mut_ method. Read more
Source§

unsafe fn get_vfield_mut_unchecked( &mut self, variant: V, field: F, ) -> &mut Self::Ty

Accesses the F field in the V variant by mutable reference, without checking that the enum is currently the V variant. Read more
Source§

unsafe fn get_vfield_raw_mut_unchecked(ptr: *mut (), field: F) -> *mut Self::Ty
where Self: Sized, V: ConstDefault,

Accesses the F field in the V variant by raw pointer, without checking that the enum is currently the V variant. Read more
Source§

impl<T, V, F, Ty> IntoVariantField<TStr<V>, F> for Box<T>
where T: ?Sized + IntoVariantField<TStr<V>, F, Ty = Ty>,

Source§

fn into_vfield_(self, vname: TStr<V>, fname: F) -> Option<Ty>

Converts this into the F field in the V variant by value.
Source§

unsafe fn move_out_vfield_( &mut self, vname: TStr<V>, fname: F, moved: &mut MovedOutFields, ) -> Option<Ty>

Moves out the F field from the V variant. Read more
Source§

unsafe fn into_vfield_unchecked_( self, variant_name: V, field_name: F, ) -> Self::Ty
where Self: Sized,

Converts this into the F field in the V variant by value. Read more
Source§

unsafe fn move_out_vfield_unchecked_( &mut self, variant_name: V, field_name: F, moved_fields: &mut MovedOutFields, ) -> Self::Ty

Converts this into the F field in the V variant by value, without checking that the enum is currently the V variant. Read more
Source§

impl<T, V, F> IntoVariantField<TStr<V>, F> for FieldCloner<T>
where T: GetVariantField<TStr<V>, F>, T::Ty: Clone,

Source§

fn into_vfield_(self, variant_name: TStr<V>, field_name: F) -> Option<Self::Ty>

Converts this into the F field in the V variant by value.
Source§

unsafe fn move_out_vfield_( &mut self, variant_name: TStr<V>, field_name: F, _: &mut MovedOutFields, ) -> Option<Self::Ty>

Moves out the F field from the V variant. Read more
Source§

unsafe fn into_vfield_unchecked_( self, variant_name: V, field_name: F, ) -> Self::Ty
where Self: Sized,

Converts this into the F field in the V variant by value. Read more
Source§

unsafe fn move_out_vfield_unchecked_( &mut self, variant_name: V, field_name: F, moved_fields: &mut MovedOutFields, ) -> Self::Ty

Converts this into the F field in the V variant by value, without checking that the enum is currently the V variant. Read more
Source§

impl<T, __V, __F, __Ty> IntoVariantField<TStr<__V>, __F> for StrucWrapper<T>
where T: IntoVariantField<TStr<__V>, __F, Ty = __Ty>,

Source§

fn into_vfield_(self, vname: TStr<__V>, fname: __F) -> Option<__Ty>

Converts this into the F field in the V variant by value.
Source§

unsafe fn move_out_vfield_( &mut self, vname: TStr<__V>, fname: __F, moved: &mut MovedOutFields, ) -> Option<__Ty>

Moves out the F field from the V variant. Read more
Source§

unsafe fn into_vfield_unchecked_( self, variant_name: V, field_name: F, ) -> Self::Ty
where Self: Sized,

Converts this into the F field in the V variant by value. Read more
Source§

unsafe fn move_out_vfield_unchecked_( &mut self, variant_name: V, field_name: F, moved_fields: &mut MovedOutFields, ) -> Self::Ty

Converts this into the F field in the V variant by value, without checking that the enum is currently the V variant. Read more
Source§

impl<T> IsMultiFieldPath for TStr<T>

Source§

type PathUniqueness = UniquePaths

Whether the paths in the set can contain duplicate paths. Read more
Source§

impl<'a, T, __V> IsVariant<TStr<__V>> for &'a T
where T: IsVariant<TStr<__V>> + ?Sized,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<'a, T, __V> IsVariant<TStr<__V>> for &'a mut T
where T: IsVariant<TStr<__V>> + ?Sized + 'a,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for Arc<T>
where T: IsVariant<TStr<__V>> + ?Sized,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for Box<T>
where T: IsVariant<TStr<__V>> + ?Sized,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for FieldCloner<T>
where T: IsVariant<TStr<__V>>,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for ManuallyDrop<T>
where T: IsVariant<TStr<__V>>,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<P, __V> IsVariant<TStr<__V>> for Pin<P>
where P::Target: IsVariant<TStr<__V>> + Sized, P: Deref,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for Rc<T>
where T: IsVariant<TStr<__V>> + ?Sized,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T, __V> IsVariant<TStr<__V>> for StrucWrapper<T>
where T: IsVariant<TStr<__V>>,

Source§

fn is_variant_(&self, name: TStr<__V>) -> bool

Checks whether this enum is the variant that V stands for.
Source§

impl<T> Ord for TStr<T>

Source§

fn cmp(&self, _other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T> PartialEq for TStr<T>

Source§

fn eq(&self, _other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> PartialOrd for TStr<T>

Source§

fn partial_cmp(&self, _other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<This, T> RevFieldErr<This> for TStr<T>
where This: ?Sized + FieldType<Self>,

Source§

type Err = InfallibleAccess

The error returned by rev_* methods. Read more
Source§

impl<This, T> RevFieldType<This> for TStr<T>
where This: ?Sized + FieldType<Self>,

Source§

type Ty = <This as FieldType<TStr<T>>>::Ty

The type of the field.
Source§

impl<'a, This, T> RevGetFieldImpl<'a, This> for TStr<T>
where This: ?Sized + 'a + GetField<Self>, This::Ty: 'a,

Source§

fn rev_get_field(self, this: &'a This) -> Result<&'a This::Ty, InfallibleAccess>

Accesses the field that self represents inside of this,by reference.
Source§

impl<'a, This, T> RevGetFieldMutImpl<'a, This> for TStr<T>
where This: ?Sized + 'a + GetFieldMut<Self>, This::Ty: 'a,

Source§

fn rev_get_field_mut( self, this: &'a mut This, ) -> Result<&'a mut This::Ty, InfallibleAccess>

Accesses the field that self represents inside of this,by mutable reference.
Source§

unsafe fn rev_get_field_raw_mut( self, this: *mut This, ) -> Result<*mut This::Ty, InfallibleAccess>

Accesses the field that self represents inside of this,by raw pointer. Read more
Source§

impl<'a, This, T> RevGetMultiFieldImpl<'a, This> for TStr<T>
where Self: RevGetFieldImpl<'a, This>, This: 'a + ?Sized, RGFT<Self, This>: 'a, Result<&'a RGFT<Self, This>, RGFE<Self, This>>: 'a + NormalizeFields,

Source§

type UnnormFields = (Result<&'a <TStr<T> as RevFieldType<This>>::Ty, <TStr<T> as RevFieldErr<This>>::Err>,)

A collection of Results<&'a _,_>s referencing fields.
Source§

fn rev_get_multi_field_impl( self, this: &'a This, ) -> (Result<&'a RGFT<Self, This>, RGFE<Self, This>>,)

Gets references to multiple fields from this.
Source§

impl<'a, This, T> RevGetMultiFieldMutImpl<'a, This> for TStr<T>
where Self: RevGetFieldMutImpl<'a, This>, This: 'a + ?Sized, RGFT<Self, This>: 'a, Result<&'a mut RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields, Result<*mut RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields,

Source§

type UnnormFieldsMut = (Result<&'a mut <TStr<T> as RevFieldType<This>>::Ty, <TStr<T> as RevFieldErr<This>>::Err>,)

This is usually a tuple of Result<&mut _,E: IsFieldErr>s.
Source§

type UnnormFieldsRawMut = (Result<*mut <TStr<T> as RevFieldType<This>>::Ty, <TStr<T> as RevFieldErr<This>>::Err>,)

This is usually a tuple of Result<*mut _,E: IsFieldErr>s.
Source§

fn rev_get_multi_field_mut_impl( self, this: &'a mut This, ) -> (Result<&'a mut RGFT<Self, This>, RGFE<Self, This>>,)

Gets mutable references to multiple fields from this, usually a tuple of Result<&mut _,E: IsFieldErr>s.
Source§

unsafe fn rev_get_multi_field_raw_mut_impl( self, this: *mut This, ) -> (Result<*mut RGFT<Self, This>, RGFE<Self, This>>,)

Gets raw pointers to multiple fields from this, usually a tuple of Result<*mut _,E: IsFieldErr>s. Read more
Source§

impl<This, T> RevIntoFieldImpl<This> for TStr<T>
where This: ?Sized + IntoField<Self>,

Source§

fn rev_into_field(self, this: This) -> Result<This::Ty, InfallibleAccess>
where This: Sized, Self::Ty: Sized,

Accesses the field that self represents inside of this,by value.
Source§

impl<This, T> RevIntoMultiFieldImpl<This> for TStr<T>
where Self: RevIntoFieldImpl<This>, RGFT<Self, This>: Sized, Result<RGFT<Self, This>, RGFE<Self, This>>: NormalizeFields,

Source§

type UnnormIntoFields = (Result<<TStr<T> as RevFieldType<This>>::Ty, <TStr<T> as RevFieldErr<This>>::Err>,)

This is usually a tuple of Result<_, E: IsFieldErr>s.
Source§

fn rev_into_multi_field_impl( self, this: This, ) -> (Result<RGFT<Self, This>, RGFE<Self, This>>,)

Converts this into multiple fields by value, usually a tuple of Result<_, E: IsFieldErr>s.
Source§

impl<This, T> RevMoveOutFieldImpl<This> for TStr<T>
where This: ?Sized + IntoField<Self>,

Source§

unsafe fn rev_move_out_field( self, this: &mut This, moved: &mut MovedOutFields, ) -> Result<Self::Ty, Self::Err>
where Self::Ty: Sized,

Moves out the field that self represents inside of this. Read more
Source§

impl<T> Copy for TStr<T>

Source§

impl<T> Eq for TStr<T>

Source§

impl<T> IsSingleFieldPath for TStr<T>

Source§

impl<T> IsTStr for TStr<T>

Source§

impl<T> ShallowFieldPath for TStr<T>

Auto Trait Implementations§

§

impl<T> Freeze for TStr<T>

§

impl<T> RefUnwindSafe for TStr<T>
where T: RefUnwindSafe,

§

impl<T> Send for TStr<T>
where T: Send,

§

impl<T> Sync for TStr<T>
where T: Sync,

§

impl<T> Unpin for TStr<T>
where T: Unpin,

§

impl<T> UnwindSafe for TStr<T>
where T: 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<This> EnumExt for This
where This: ?Sized,

Source§

fn as_variant<V>( &self, vari: TStr<V>, ) -> Result<&VariantProxy<Self, TStr<V>>, &Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a reference to an enum into a reference of a VariantProxy of some variant. Read more
Source§

fn as_mut_variant<V>( &mut self, vari: TStr<V>, ) -> Result<&mut VariantProxy<Self, TStr<V>>, &mut Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a mutable reference to an enum into a mutable reference of a VariantProxy of some variant. Read more
Source§

unsafe fn as_raw_mut_variant<V>( this: *mut Self, vari: TStr<V>, ) -> Result<*mut VariantProxy<Self, TStr<V>>, *mut Self>
where Self: IsVariant<TStr<V>>,

Fallibly converts a raw pointer to an enum into a raw pointer of a VariantProxy of some variant. Read more
Source§

fn into_variant<V>( self, vari: TStr<V>, ) -> Result<VariantProxy<Self, TStr<V>>, Self>
where Self: IsVariant<TStr<V>> + Sized,

Fallibly converts an enum into a VariantProxy of some variant. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<This, T> IntoStructural<T> for This
where T: FromStructural<This>,

Source§

fn into_structural(self) -> T

Performs the conversion
Source§

impl<'a, This, Path> RevGetMultiField<'a, This> for Path
where This: 'a + ?Sized, Path: RevGetMultiFieldImpl<'a, This>,

Source§

type Fields = <<Path as RevGetMultiFieldImpl<'a, This>>::UnnormFields as NormalizeFields>::Output

This is usually a tuple of Option<&_>s and &_s.
Source§

fn rev_get_multi_field( self, this: &'a This, ) -> <Path as RevGetMultiField<'a, This>>::Fields

Gets references to multiple fields from this, usually a tuple of Option<&_>s and &_s.
Source§

impl<'a, This, Path> RevGetMultiFieldMut<'a, This> for Path
where This: 'a + ?Sized, Path: RevGetMultiFieldMutImpl<'a, This>,

Source§

type FieldsMut = <<Path as RevGetMultiFieldMutImpl<'a, This>>::UnnormFieldsMut as NormalizeFields>::Output

This is usually a tuple of Option<&mut _>s and &mut _s.
Source§

type FieldsRawMut = <<Path as RevGetMultiFieldMutImpl<'a, This>>::UnnormFieldsRawMut as NormalizeFields>::Output

This is usually a tuple of Option<*mut _>s and *mut _s.
Source§

fn rev_get_multi_field_mut( self, this: &'a mut This, ) -> <Path as RevGetMultiFieldMut<'a, This>>::FieldsMut

Gets mutable references to multiple fields from this, usually a tuple of Option<&mut _>s and &mut _s.
Source§

unsafe fn rev_get_multi_field_raw_mut( self, this: *mut This, ) -> <Path as RevGetMultiFieldMut<'a, This>>::FieldsRawMut

Gets raw pointers to multiple fields from this, usually a tuple of Option<*mut _>s and *mut _s. Read more
Source§

impl<This, Path> RevIntoMultiField<This> for Path
where Path: RevIntoMultiFieldImpl<This>,

Source§

type IntoFields = <<Path as RevIntoMultiFieldImpl<This>>::UnnormIntoFields as NormalizeFields>::Output

This is usually a tuple of Option<T>s and Ts.
Source§

fn rev_into_multi_field( self, this: This, ) -> <Path as RevIntoMultiField<This>>::IntoFields

Converts this into multiple fields by value. usually a tuple of Option<T>s and Ts.
Source§

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

Source§

const T: PhantomData<fn() -> Self> = PhantomData

Represents Self by using a VariantPhantom, using the syntax Type::T to pass it in methods with _:VariantPhantom<T> parameters. Read more
Source§

const T_D: PhantomData<Self> = PhantomData

Represents Self by using a VariantDropPhantom,for specialized cases. Read more
Source§

fn assert_ty(self, _other: PhantomData<fn() -> Self>) -> Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn assert_ty_ref(&self, _other: PhantomData<fn() -> Self>) -> &Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn assert_ty_mut(&mut self, _other: PhantomData<fn() -> Self>) -> &mut Self
where Self: Sized,

Asserts that other is the same type as self.
Source§

fn ty_(&self) -> PhantomData<fn() -> Self>

Equivalent to SelfOps::T,as a method. Read more
Source§

fn ty_d(&self) -> PhantomData<Self>

Equivalent to Self::ty_,for specialized cases. Read more
Source§

fn ty_inv(&self) -> PhantomData<fn(Self) -> Self>

Equivalent to Self::ty_ with an invariant type.
Source§

fn ty_inv_ref(&self) -> PhantomData<Cell<&Self>>

Equivalent to Self::ty_ with an invariant lifetime.
Source§

fn eq_id(&self, other: &Self) -> bool

Identity comparison to another value of the same type. Read more
Source§

fn piped<F, U>(self, f: F) -> U
where F: FnOnce(Self) -> U, Self: Sized,

Emulates the pipeline operator,allowing method syntax in more places. Read more
Source§

fn piped_ref<'a, F, U>(&'a self, f: F) -> U
where F: FnOnce(&'a Self) -> U,

The same as piped except that the function takes &Self Useful for functions that take &Self instead of Self. Read more
Source§

fn piped_mut<'a, F, U>(&'a mut self, f: F) -> U
where F: FnOnce(&'a mut Self) -> U,

The same as piped except that the function takes &mut Self. Useful for functions that take &mut Self instead of Self.
Source§

fn mutated<F>(self, f: F) -> Self
where F: FnOnce(&mut Self), Self: Sized,

Mutates self using a closure taking self by mutable reference, passing it along the method chain. Read more
Source§

fn observe<F>(self, f: F) -> Self
where F: FnOnce(&Self), Self: Sized,

Observes the value of self passing it along unmodified. Useful in a long method chain. Read more
Source§

fn into_<T>(self, _: PhantomData<fn() -> T>) -> T
where Self: Into<T>,

Performs a conversion using Into. Read more
Source§

fn as_ref_<T>(&self) -> &T
where Self: AsRef<T>, T: ?Sized,

Performs a reference to reference conversion using AsRef, using the turbofish .as_ref_::<_>() syntax. Read more
Source§

fn as_mut_<T>(&mut self) -> &mut T
where Self: AsMut<T>, T: ?Sized,

Performs a mutable reference to mutable reference conversion using AsMut, using the turbofish .as_mut_::<_>() syntax. Read more
Source§

fn drop_(self)
where Self: Sized,

Drops self using method notation. Alternative to std::mem::drop. Read more
Source§

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

Source§

fn field_<'a, P>( &'a self, path: P, ) -> NormalizeFieldsOut<Result<&'a P::Ty, P::Err>>
where P: RevGetFieldImpl<'a, Self>, Result<&'a P::Ty, P::Err>: NormalizeFields,

Gets a reference to a field,determined by path. Read more
Source§

fn fields<'a, P>(&'a self, path: P) -> RevGetMultiFieldOut<'a, P, Self>
where P: RevGetMultiField<'a, Self>,

Gets references to multiple fields,determined by path. Read more
Source§

fn cloned_fields<'a, P>( &'a self, path: P, ) -> ClonedOut<RevGetMultiFieldOut<'a, P, Self>>
where P: RevGetMultiField<'a, Self>, RevGetMultiFieldOut<'a, P, Self>: Cloned,

Gets clones of multiple fields,determined by path. Read more
Source§

fn field_mut<'a, P>( &'a mut self, path: P, ) -> NormalizeFieldsOut<Result<&'a mut P::Ty, P::Err>>
where P: RevGetFieldMutImpl<'a, Self>, Result<&'a mut P::Ty, P::Err>: NormalizeFields,

Gets a mutable reference to a field,determined by path. Read more
Source§

fn fields_mut<'a, P>( &'a mut self, path: P, ) -> RevGetMultiFieldMutOut<'a, P, Self>
where P: RevGetMultiFieldMut<'a, Self>,

Gets mutable references to multiple fields,determined by path. Read more
Source§

fn into_field<P>(self, path: P) -> NormalizeFieldsOut<Result<P::Ty, P::Err>>
where P: RevIntoFieldImpl<Self>, P::Ty: Sized, Result<P::Ty, P::Err>: NormalizeFields, Self: Sized,

Converts ´self´ into a field,determined by path. Read more
Source§

fn into_fields<P>(self, path: P) -> RevIntoMultiFieldOut<P, Self>
where P: RevIntoMultiField<Self>, Self: Sized,

Converts self into multiple fields by value. Read more
Source§

fn is_variant<P>(&self, _path: P) -> bool
where P: IsTStr, Self: IsVariant<P>,

Checks whether an enum is a particular variant. Read more
Source§

fn into_struc<U>(self) -> U
where Self: IntoStructural<U>,

Converts this into another structural type using IntoStructural. Read more
Source§

fn try_into_struc<U>(self) -> Result<U, TryFromError<Self, Self::Error>>
where Self: TryIntoStructural<U>,

Performs a fallible conversion into another structural type using TryIntoStructural. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The error type returned when the conversion fails.
Source§

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

Performs the conversion
Source§

impl<This, T> TryIntoStructural<T> for This
where T: TryFromStructural<This>,

Source§

type Error = <T as TryFromStructural<This>>::Error

The error parameter of TryFromError, returned from try_into_structural on conversion error.
Source§

fn try_into_structural( self, ) -> Result<T, TryFromError<This, <This as TryIntoStructural<T>>::Error>>

Performs the conversion
Source§

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

Source§

type Type = T

The same type as Self. Read more
Source§

fn into_type_val(self) -> Self::Type
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
Source§

fn into_type_ref(&self) -> &Self::Type

Converts a reference back to the original type.
Source§

fn into_type_mut(&mut self) -> &mut Self::Type

Converts a mutable reference back to the original type.
Source§

fn into_type_box(self: Box<Self>) -> Box<Self::Type>

Converts a box back to the original type.
Source§

fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>

Converts an Arc back to the original type.
Source§

fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>

Converts an Rc back to the original type.
Source§

fn from_type_val(this: Self::Type) -> Self
where Self: Sized, Self::Type: Sized,

Converts a value back to the original type.
Source§

fn from_type_ref(this: &Self::Type) -> &Self

Converts a reference back to the original type.
Source§

fn from_type_mut(this: &mut Self::Type) -> &mut Self

Converts a mutable reference back to the original type.
Source§

fn from_type_box(this: Box<Self::Type>) -> Box<Self>

Converts a box back to the original type.
Source§

fn from_type_arc(this: Arc<Self::Type>) -> Arc<Self>

Converts an Arc back to the original type.
Source§

fn from_type_rc(this: Rc<Self::Type>) -> Rc<Self>

Converts an Rc back to the original type.
Source§

impl<This, T> Array0<T> for This
where This: ?Sized,

Source§

impl<This, V, T> Array0Variant<T, V> for This
where This: ?Sized,

Source§

impl<This, T> ArrayMove0<T> for This
where This: ?Sized,

Source§

impl<'a, Path, This> RevGetField<'a, This> for Path
where Path: RevGetFieldImpl<'a, This, Err = InfallibleAccess>,

Source§

impl<'a, Path, This> RevGetFieldMut<'a, This> for Path
where Path: RevGetFieldMutImpl<'a, This, Err = InfallibleAccess>,

Source§

impl<Path, This> RevIntoField<This> for Path
where Path: RevIntoFieldImpl<This, Err = InfallibleAccess>,

Source§

impl<'a, Path, This> RevIntoFieldMut<'a, This> for Path
where Path: RevIntoField<This> + RevGetFieldMut<'a, This>,

Source§

impl<'a, Path, This> RevIntoFieldRef<'a, This> for Path
where Path: RevIntoField<This> + RevGetFieldMut<'a, This>,