[−][src]Struct tstr::TStr
A type-level string type, similar to a &'static str
const parameter.
Examples
Accessing Fields
This example demonstrates how you can use TStr
to implement a generic accessor trait.
use tstr::TStr; use tstr::{TS, ts}; fn main() { let mut tup = (3, 5, 8); assert_eq!(tup.get(ts!(0)), &3); assert_eq!(tup.get(ts!(1)), &5); assert_eq!(tup.get(ts!(2)), &8); let old_0 = replace(&mut tup, ts!(0), 333); let old_1 = replace(&mut tup, ts!(1), 555); let old_2 = replace(&mut tup, ts!(2), 888); assert_eq!(tup.get(ts!(0)), &333); assert_eq!(tup.get(ts!(1)), &555); assert_eq!(tup.get(ts!(2)), &888); assert_eq!(old_0, 3); assert_eq!(old_1, 5); assert_eq!(old_2, 8); } fn replace<T, N>(this: &mut T, name: TStr<N>, replacement: T::Field) -> T::Field where T: Access<TStr<N>>, T::Field: Clone, { let ret = this.get(name).clone(); this.set(name, replacement); ret } trait Access<N> { type Field; fn get(&self, _field_name: N) -> &Self::Field; fn set(&mut self, _field_name: N, val: Self::Field); } impl<A, B, C> Access<TS!(0)> for (A, B, C) { type Field = A; fn get(&self, _field_name: TS!(0)) -> &A { &self.0 } fn set(&mut self, _field_name: TS!(0), val: A){ self.0 = val; } } impl<A, B, C> Access<TS!(1)> for (A, B, C) { type Field = B; fn get(&self, _field_name: TS!(1)) -> &B { &self.1 } fn set(&mut self, _field_name: TS!(1), val: B){ self.1 = val; } } impl<A, B, C> Access<TS!(2)> for (A, B, C) { type Field = C; fn get(&self, _field_name: TS!(2)) -> &C { &self.2 } fn set(&mut self, _field_name: TS!(2), val: C){ self.2 = val; } }
Implementations
impl<T> TStr<T>
[src]
pub const NEW: Self
[src]
Constructs the TStr.
Example
use tstr::{TS, TStr}; type FOO = TS!(foo); let foo_1: FOO = TStr::NEW; let foo_2 = FOO::NEW; // The same as the previous statement
impl<T> TStr<T> where
Self: StrValue,
[src]
Self: StrValue,
pub const STR: &'static str
[src]
This is supported on crate feature
const_generics
only.The &'static str
value of this TStr
.
Example
use tstr::TS; type FOO = TS!(foo); type BAR = TS!(bar); assert_eq!(FOO::STR, "foo"); assert_eq!(BAR::STR, "bar");
Trait Implementations
impl<T> Clone for TStr<T>
[src]
pub fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<T> Copy for TStr<T>
[src]
impl<T> Debug for TStr<T>
[src]
impl<T> Default for TStr<T>
[src]
impl<T> Eq for TStr<T>
[src]
impl Index<TStr<___<"bar">>> for Foo
[src]
This is supported on crate feature
for_examples
only.type Output = u32
The returned type after indexing.
pub fn index(&self, _: TStr<___<bar>>) -> &u32
[src]
impl Index<TStr<___<"bar">>> for Bar
[src]
This is supported on crate feature
for_examples
only.type Output = u32
The returned type after indexing.
pub fn index(&self, _: TStr<___<bar>>) -> &u32
[src]
impl Index<TStr<___<"baz">>> for Foo
[src]
This is supported on crate feature
for_examples
only.type Output = u64
The returned type after indexing.
pub fn index(&self, _: TStr<___<baz>>) -> &u64
[src]
impl Index<TStr<___<"baz">>> for Bar
[src]
This is supported on crate feature
for_examples
only.type Output = bool
The returned type after indexing.
pub fn index(&self, _: TStr<___<baz>>) -> &bool
[src]
impl Index<TStr<___<"boom">>> for Bar
[src]
This is supported on crate feature
for_examples
only.type Output = Option<char>
The returned type after indexing.
pub fn index(&self, _: TStr<___<boom>>) -> &Option<char>
[src]
impl Index<TStr<___<"qux">>> for Foo
[src]
This is supported on crate feature
for_examples
only.type Output = &'static str
The returned type after indexing.
pub fn index(&self, _: TStr<___<qux>>) -> &&'static str
[src]
impl IndexMut<TStr<___<"bar">>> for Foo
[src]
This is supported on crate feature
for_examples
only.impl IndexMut<TStr<___<"bar">>> for Bar
[src]
This is supported on crate feature
for_examples
only.impl IndexMut<TStr<___<"baz">>> for Foo
[src]
This is supported on crate feature
for_examples
only.impl IndexMut<TStr<___<"baz">>> for Bar
[src]
This is supported on crate feature
for_examples
only.impl IndexMut<TStr<___<"boom">>> for Bar
[src]
This is supported on crate feature
for_examples
only.impl IndexMut<TStr<___<"qux">>> for Foo
[src]
This is supported on crate feature
for_examples
only.impl<T> MakeTStr for TStr<T>
[src]
impl<T> Ord for TStr<T>
[src]
pub fn cmp(&self, _other: &Self) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<T> PartialEq<TStr<T>> for TStr<T>
[src]
pub fn eq(&self, _other: &Self) -> bool
[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl<T> PartialOrd<TStr<T>> for TStr<T>
[src]
pub fn partial_cmp(&self, _other: &Self) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<const S: &'static str> StrValue for TStr<___<S>>
[src]
This is supported on crate feature
const_generics
only.impl<T> ToUint for TStr<T> where
T: ToUint,
[src]
T: ToUint,
Auto Trait Implementations
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,