Revert "feat: implement hash_map! macro"
This reverts commit 066023e47c.
This commit is contained in:
parent
a81ed52f58
commit
c01682ebf6
2 changed files with 0 additions and 76 deletions
|
|
@ -290,8 +290,6 @@
|
|||
#![feature(ffi_const)]
|
||||
#![feature(formatting_options)]
|
||||
#![feature(funnel_shifts)]
|
||||
#![feature(hash_map_internals)]
|
||||
#![feature(hash_map_macro)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(intra_doc_pointers)]
|
||||
#![feature(iter_advance_by)]
|
||||
|
|
|
|||
|
|
@ -379,77 +379,3 @@ macro_rules! dbg {
|
|||
($($crate::dbg!($val)),+,)
|
||||
};
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[macro_export]
|
||||
#[allow_internal_unstable(hash_map_internals)]
|
||||
#[unstable(feature = "hash_map_internals", issue = "none")]
|
||||
macro_rules! repetition_utils {
|
||||
(@count $($tokens:tt),*) => {{
|
||||
[$($crate::repetition_utils!(@replace $tokens => ())),*].len()
|
||||
}};
|
||||
|
||||
(@replace $x:tt => $y:tt) => { $y }
|
||||
}
|
||||
|
||||
/// Creates a [`HashMap`] containing the arguments.
|
||||
///
|
||||
/// `hash_map!` allows specifying the entries that make
|
||||
/// up the [`HashMap`] where the key and value are separated by a `=>`.
|
||||
///
|
||||
/// The entries are separated by commas with a trailing comma being allowed.
|
||||
///
|
||||
/// It is semantically equivalent to using repeated [`HashMap::insert`]
|
||||
/// on a newly created hashmap.
|
||||
///
|
||||
/// `hash_map!` will attempt to avoid repeated reallocations by
|
||||
/// using [`HashMap::with_capacity`].
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// #![feature(hash_map_macro)]
|
||||
///
|
||||
/// let map = hash_map! {
|
||||
/// "key" => "value",
|
||||
/// "key1" => "value1"
|
||||
/// };
|
||||
///
|
||||
/// assert_eq!(map.get("key"), Some(&"value"));
|
||||
/// assert_eq!(map.get("key1"), Some(&"value1"));
|
||||
/// assert!(map.get("brrrrrrooooommm").is_none());
|
||||
/// ```
|
||||
///
|
||||
/// And with a trailing comma
|
||||
///
|
||||
///```rust
|
||||
/// #![feature(hash_map_macro)]
|
||||
///
|
||||
/// let map = hash_map! {
|
||||
/// "key" => "value", // notice the ,
|
||||
/// };
|
||||
///
|
||||
/// assert_eq!(map.get("key"), Some(&"value"));
|
||||
/// ```
|
||||
///
|
||||
/// The key and value are moved into the HashMap.
|
||||
///
|
||||
/// [`HashMap`]: crate::collections::HashMap
|
||||
/// [`HashMap::insert`]: crate::collections::HashMap::insert
|
||||
/// [`HashMap::with_capacity`]: crate::collections::HashMap::with_capacity
|
||||
#[macro_export]
|
||||
#[allow_internal_unstable(hash_map_internals)]
|
||||
#[unstable(feature = "hash_map_macro", issue = "144032")]
|
||||
macro_rules! hash_map {
|
||||
() => {{
|
||||
$crate::collections::HashMap::new()
|
||||
}};
|
||||
|
||||
( $( $key:expr => $value:expr ),* $(,)? ) => {{
|
||||
let mut map = $crate::collections::HashMap::with_capacity(
|
||||
const { $crate::repetition_utils!(@count $($key),*) }
|
||||
);
|
||||
$( map.insert($key, $value); )*
|
||||
map
|
||||
}}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue