pub struct Extensions { /* private fields */ }
Expand description
A type map for request extensions.
All entries into this map must be owned types (or static references).
Implementations§
Source§impl Extensions
impl Extensions
Sourcepub fn new() -> Extensions
pub fn new() -> Extensions
Creates an empty Extensions
.
Sourcepub fn insert<T: 'static>(&mut self, val: T) -> Option<T>
pub fn insert<T: 'static>(&mut self, val: T) -> Option<T>
Insert an item into the map.
If an item of this type was already stored, it will be replaced and returned.
let mut map = Extensions::new();
assert_eq!(map.insert(""), None);
assert_eq!(map.insert(1u32), None);
assert_eq!(map.insert(2u32), Some(1u32));
assert_eq!(*map.get::<u32>().unwrap(), 2u32);
Sourcepub fn contains<T: 'static>(&self) -> bool
pub fn contains<T: 'static>(&self) -> bool
Check if map contains an item of a given type.
let mut map = Extensions::new();
assert!(!map.contains::<u32>());
assert_eq!(map.insert(1u32), None);
assert!(map.contains::<u32>());
Sourcepub fn get<T: 'static>(&self) -> Option<&T>
pub fn get<T: 'static>(&self) -> Option<&T>
Get a reference to an item of a given type.
let mut map = Extensions::new();
map.insert(1u32);
assert_eq!(map.get::<u32>(), Some(&1u32));
Sourcepub fn get_mut<T: 'static>(&mut self) -> Option<&mut T>
pub fn get_mut<T: 'static>(&mut self) -> Option<&mut T>
Get a mutable reference to an item of a given type.
let mut map = Extensions::new();
map.insert(1u32);
assert_eq!(map.get_mut::<u32>(), Some(&mut 1u32));
Sourcepub fn get_or_insert<T: 'static>(&mut self, value: T) -> &mut T
pub fn get_or_insert<T: 'static>(&mut self, value: T) -> &mut T
Inserts the given value
into the extensions if it is not present, then returns a reference
to the value in the extensions.
let mut map = Extensions::new();
assert_eq!(map.get::<Vec<u32>>(), None);
map.get_or_insert(Vec::<u32>::new()).push(1);
assert_eq!(map.get::<Vec<u32>>(), Some(&vec![1]));
map.get_or_insert(Vec::<u32>::new()).push(2);
assert_eq!(map.get::<Vec<u32>>(), Some(&vec![1,2]));
Sourcepub fn get_or_insert_with<T: 'static, F: FnOnce() -> T>(
&mut self,
default: F,
) -> &mut T
pub fn get_or_insert_with<T: 'static, F: FnOnce() -> T>( &mut self, default: F, ) -> &mut T
Inserts a value computed from f
into the extensions if the given value
is not present,
then returns a reference to the value in the extensions.
let mut map = Extensions::new();
assert_eq!(map.get::<Vec<u32>>(), None);
map.get_or_insert_with(Vec::<u32>::new).push(1);
assert_eq!(map.get::<Vec<u32>>(), Some(&vec![1]));
map.get_or_insert_with(Vec::<u32>::new).push(2);
assert_eq!(map.get::<Vec<u32>>(), Some(&vec![1,2]));
Sourcepub fn remove<T: 'static>(&mut self) -> Option<T>
pub fn remove<T: 'static>(&mut self) -> Option<T>
Remove an item from the map of a given type.
If an item of this type was already stored, it will be returned.
let mut map = Extensions::new();
map.insert(1u32);
assert_eq!(map.get::<u32>(), Some(&1u32));
assert_eq!(map.remove::<u32>(), Some(1u32));
assert!(!map.contains::<u32>());
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clear the Extensions
of all inserted extensions.
let mut map = Extensions::new();
map.insert(1u32);
assert!(map.contains::<u32>());
map.clear();
assert!(!map.contains::<u32>());
Sourcepub fn extend(&mut self, other: Extensions)
pub fn extend(&mut self, other: Extensions)
Extends self with the items from another Extensions
.