TypeMap

Struct TypeMap 

Source
pub struct TypeMap { /* private fields */ }
Expand description

Nearly 1-to-1 with this blog: https://nickbryan.co.uk/software/using-a-type-map-for-dependency-injection-in-rust/ A TypeMap uniquely stores an arbitrary value by its type. No types can store more than one value.

Implementations§

Source§

impl TypeMap

Source

pub fn new() -> Self

Creates a new, empty type map.

Source

pub fn bind<T: Any>(&mut self, val: T) -> Option<Box<T>>

Binds the given value to its type in the type map. If an existing value for this type exists, it’s returned. An existing value with an incorrect type is returned as none.

Source

pub fn get<T: Any>(&self) -> Option<&T>

Returns the value in this type map for this unique type.

Trait Implementations§

Source§

impl Debug for TypeMap

Source§

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

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

impl Default for TypeMap

Source§

fn default() -> TypeMap

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

Auto Trait Implementations§

§

impl Freeze for TypeMap

§

impl !RefUnwindSafe for TypeMap

§

impl !Send for TypeMap

§

impl !Sync for TypeMap

§

impl Unpin for TypeMap

§

impl !UnwindSafe for TypeMap

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