Trait Named

Source
pub trait Named: Sized + 'static {
    // Required method
    fn typename() -> &'static str;

    // Provided methods
    fn typehash() -> u64 { ... }
    fn typeid() -> TypeId { ... }
    fn port() -> u64 { ... }
    fn arm(&self) -> Option<&'static str> { ... }
    unsafe fn arm_unchecked(self_: *const ()) -> Option<&'static str> { ... }
}
Expand description

A Named type is a type that has a globally unique name.

Required Methods§

Source

fn typename() -> &'static str

The globally unique type name for the type. This should typically be the fully qualified Rust name of the type.

Provided Methods§

Source

fn typehash() -> u64

A globally unique hash for this type. TODO: actually enforce perfect hashing

Source

fn typeid() -> TypeId

The TypeId for this type. TypeIds are unique only within a binary, and should not be used for global identification.

Source

fn port() -> u64

The globally unique port for this type. Typed ports are in the range of 1<<63..1<<64-1.

Source

fn arm(&self) -> Option<&'static str>

If the named type is an enum, this returns the name of the arm of the value self.

Source

unsafe fn arm_unchecked(self_: *const ()) -> Option<&'static str>

An unsafe version of ‘arm’, accepting a pointer to the value, for use in type-erased settings.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Named for &'static str

Source§

fn typename() -> &'static str

Source§

impl Named for bool

Source§

fn typename() -> &'static str

Source§

impl Named for f32

Source§

fn typename() -> &'static str

Source§

impl Named for f64

Source§

fn typename() -> &'static str

Source§

impl Named for i8

Source§

fn typename() -> &'static str

Source§

impl Named for i16

Source§

fn typename() -> &'static str

Source§

impl Named for i32

Source§

fn typename() -> &'static str

Source§

impl Named for i64

Source§

fn typename() -> &'static str

Source§

impl Named for i128

Source§

fn typename() -> &'static str

Source§

impl Named for isize

Source§

fn typename() -> &'static str

Source§

impl Named for u8

Source§

fn typename() -> &'static str

Source§

impl Named for u16

Source§

fn typename() -> &'static str

Source§

impl Named for u32

Source§

fn typename() -> &'static str

Source§

impl Named for u64

Source§

fn typename() -> &'static str

Source§

impl Named for u128

Source§

fn typename() -> &'static str

Source§

impl Named for ()

Source§

fn typename() -> &'static str

Source§

impl Named for usize

Source§

fn typename() -> &'static str

Source§

impl Named for Shape

Source§

fn typename() -> &'static str

Source§

fn typehash() -> u64

Source§

impl Named for String

Source§

fn typename() -> &'static str

Source§

impl Named for Duration

Source§

fn typename() -> &'static str

Source§

impl Named for Bytes

Source§

fn typename() -> &'static str

Source§

impl<A: Named + 'static, Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (A, Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<B: Named + 'static, A: Named + 'static, Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (B, A, Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<C: Named + 'static, B: Named + 'static, A: Named + 'static, Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (C, B, A, Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<D: Named + 'static, C: Named + 'static, B: Named + 'static, A: Named + 'static, Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (D, C, B, A, Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<E: Named + 'static, D: Named + 'static, C: Named + 'static, B: Named + 'static, A: Named + 'static, Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (E, D, C, B, A, Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<T: Named + 'static> Named for Option<T>

Source§

fn typename() -> &'static str

Source§

impl<T: Named + 'static> Named for (T,)

Source§

fn typename() -> &'static str

Source§

impl<T: Named + 'static> Named for Vec<T>

Source§

fn typename() -> &'static str

Source§

impl<T: Named + 'static, E: Named + 'static> Named for Result<T, E>

Source§

fn typename() -> &'static str

Source§

impl<U: Named + 'static, T: Named + 'static> Named for (U, T)

Source§

fn typename() -> &'static str

Source§

impl<V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Source§

impl<Z: Named + 'static, Y: Named + 'static, X: Named + 'static, W: Named + 'static, V: Named + 'static, U: Named + 'static, T: Named + 'static> Named for (Z, Y, X, W, V, U, T)

Source§

fn typename() -> &'static str

Implementors§