Struct rustful::server::Global
[−]
[src]
pub struct Global(_);
A somewhat lazy container for globally accessible data.
It will try to be as simple as possible and allocate as little as possible, depending on the number of stored values.
-
No value: Nothing is allocated and nothing is searched for during access.
-
One value: One
Box
is allocated. Searching for a value will only consist of a comparison ofTypeId
and a downcast. -
Multiple values: An
AnyMap
is created, as well as aBox
for each value. Searching for a value has the full overhead ofAnyMap
.
Global
can be created from a boxed value, from tuples or using the
Default
trait. More values can then be added using insert(value)
.
use rustful::server::Global; let mut g1: Global = Box::new(5).into(); assert_eq!(g1.get(), Some(&5)); assert_eq!(g1.get::<&str>(), None); let old = g1.insert(10); assert_eq!(old, Some(5)); assert_eq!(g1.get(), Some(&10)); g1.insert("cat"); assert_eq!(g1.get(), Some(&10)); assert_eq!(g1.get(), Some(&"cat")); let g2: Global = (5, "cat").into(); assert_eq!(g2.get(), Some(&5)); assert_eq!(g2.get(), Some(&"cat"));
Methods
impl Global
[src]
impl Global
pub fn get<T: Any + Send + Sync>(&self) -> Option<&T>
[src]
pub fn get<T: Any + Send + Sync>(&self) -> Option<&T>
Borrow a value of type T
if the there is one.
pub fn insert<T: Any + Send + Sync>(&mut self, value: T) -> Option<T>
[src]
pub fn insert<T: Any + Send + Sync>(&mut self, value: T) -> Option<T>
Insert a new value, returning the previous value of the same type, if any.
Trait Implementations
impl<T: Any + Send + Sync> From<Box<T>> for Global
[src]
impl<T: Any + Send + Sync> From<Box<T>> for Global
impl From<()> for Global
[src]
impl From<()> for Global
impl<T0: Any + Send + Sync, T1: Any + Send + Sync, T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T0: Any + Send + Sync, T1: Any + Send + Sync, T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
fn from(tuple: (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> Global
[src]
fn from(tuple: (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> Global
Performs the conversion.
impl<T1: Any + Send + Sync, T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T1: Any + Send + Sync, T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
fn from(tuple: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> Global
[src]
fn from(tuple: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> Global
Performs the conversion.
impl<T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T2: Any + Send + Sync, T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
impl<T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T3: Any + Send + Sync, T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Global
impl<T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T4, T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T4: Any + Send + Sync, T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T4, T5, T6, T7, T8, T9, T10, T11)> for Global
impl<T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T5, T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T5: Any + Send + Sync, T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T5, T6, T7, T8, T9, T10, T11)> for Global
impl<T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T6, T7, T8, T9, T10, T11)> for Global
[src]
impl<T6: Any + Send + Sync, T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T6, T7, T8, T9, T10, T11)> for Global
impl<T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T7, T8, T9, T10, T11)> for Global
[src]
impl<T7: Any + Send + Sync, T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T7, T8, T9, T10, T11)> for Global
impl<T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T8, T9, T10, T11)> for Global
[src]
impl<T8: Any + Send + Sync, T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T8, T9, T10, T11)> for Global
impl<T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T9, T10, T11)> for Global
[src]
impl<T9: Any + Send + Sync, T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T9, T10, T11)> for Global
impl<T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T10, T11)> for Global
[src]
impl<T10: Any + Send + Sync, T11: Any + Send + Sync> From<(T10, T11)> for Global
impl<T11: Any + Send + Sync> From<(T11,)> for Global
[src]
impl<T11: Any + Send + Sync> From<(T11,)> for Global
impl Default for Global
[src]
impl Default for Global