21 releases (breaking)
new 0.17.1 | Dec 9, 2024 |
---|---|
0.17.0 | Nov 30, 2024 |
0.16.0 | Oct 27, 2024 |
#399 in Data structures
350 downloads per month
Used in 2 crates
25KB
391 lines
std-macro-extensions
A collection of macro extensions for Rust's standard library data structures, simplifying the creation and manipulation of common collections such as HashMap
, Vec
, and more.
Features
- Simplified Initialization: Use macros to easily create instances of common data structures.
- Supports Various Data Structures: Includes macros for
Vec
,HashMap
,Arc
, and more. - Easy to Use: Intuitive syntax for quick data structure creation.
Installation
To install std-macro-extensions
run cmd:
cargo add std-macro-extensions
Usage
Here are some examples of how to use the macros provided by this crate:
Example: Using arc!
use std_macro_extensions::*;
fn main() {
let value = arc!(5);
}
Example: Using b_tree_map!
use std_macro_extensions::*;
fn main() {
let empty_map: BTreeMap<i32, i32> = b_tree_map!();
let b_tree_map_a: BTreeMap<&str, &str> = b_tree_map!(
"a" => "a",
"b" => "b"
);
}
Example: Using b_tree_set!
use std_macro_extensions::*;
fn main() {
let empty_set: BTreeSet<i32> = b_tree_set!();
let number_set: BTreeSet<i32> = b_tree_set!(1, 2, 3);
}
Example: Using binary_heap!
use std_macro_extensions::*;
fn main() {
let empty_set: BTreeSet<i32> = b_tree_set!();
let number_set: BTreeSet<i32> = b_tree_set!(1, 2, 3);
}
Example: Using boxed!
use std_macro_extensions::*;
fn main() {
let boxed_value = boxed!(10);
}
Example: Using cell!
use std_macro_extensions::*;
fn main() {
let cell_value: Cell<i32> = cell!(5);
}
Example: Using hash_map!
use std_macro_extensions::*;
fn main() {
let my_map: HashMap<&str, i32> = hash_map!();
let my_map: HashMap<&str, i32> = hash_map!("a" => 1, "b" => 2);
}
Example: Using hash_set!
use std_macro_extensions::*;
fn main() {
let my_set: HashSet<i32> = hash_set!();
let my_set: HashSet<i32> = hash_set!(1, 2, 3);
}
Example: Using linked_list!
use std_macro_extensions::*;
fn main() {
let my_list: LinkedList<i32> = linked_list!();
let my_list: LinkedList<i32> = linked_list!(1, 2, 3);
}
Example: Using mutex!
use std_macro_extensions::*;
fn main() {
let my_mutex: Mutex<i32> = mutex!(5);
let lock: MutexGuard<'_, i32> = my_mutex.lock().unwrap();
}
Example: Using rc!
use std_macro_extensions::*;
fn main() {
let my_rc = rc!(5);
}
Example: Using refcell!
use std_macro_extensions::*;
fn main() {
use std_macro_extensions::*;
let my_refcell = refcell!(5);
}
Example: Using rw_lock!
use std_macro_extensions::*;
fn main() {
let my_rwlock = rw_lock!(5);
}
Example: Using string!
use std_macro_extensions::*;
fn main() {
let empty_string = string!();
let hello_string = string!("Hello");
}
Example: Using vector!
use std_macro_extensions::*;
fn main() {
let empty_vector: Vec<i32> = vector!();
let numbers = vector!(1, 2, 3);
}
Example: Using vector_deque!
use std_macro_extensions::*;
fn main() {
let empty_deque: VecDeque<i32> = vector_deque!();
let numbers = vector_deque!(1, 2, 3);
}
Available Macros
arc!
: Creates anArc<T>
.vector!
: Creates aVec<T>
.map!
: Creates aHashMap<K, V>
.set!
: Creates aHashSet<T>
.b_tree_map!
: Creates aBTreeMap<K, V>
.b_tree_set!
: Creates aBTreeSet<T>
.list!
: Creates aLinkedList<T>
.heap!
: Creates aBinaryHeap<T>
.string!
: Creates aString
.boxed!
: Creates aBox<T>
.rc!
: Creates anRc<T>
.arc!
: Creates anArc<T>
.mutex!
: Creates aMutex<T>
.rw_lock!
: Creates aRwLock<T>
.cell!
: Creates aCell<T>
.ref_cell!
: Creates aRefCell<T>
.vector_deque!
: Creates aVecDeque<T>
.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
Contact
For any inquiries, please reach out to the author at ltpp-universe root@ltpp.vip.