#rest

bin+lib macroland

Simple crate for macro shorthands of various types in Rust

5 releases

0.1.5 Jul 16, 2023
0.1.4 Jul 15, 2023
0.1.3 Jun 20, 2023

#114 in #rest

GPL-3.0-or-later

18KB
290 lines

Macroland


Macroland is a simple crate with macros to create various Rust types using syntactic sugar. Some of these types offered I do not know about myself, but I have done my best to create a macro for them here. If there are any issues, feel free to report them to my github.

To name a few: hashmap!, btreeset!, or arclock!

Examples


hashmap!

Example

// I've tried my best to put things where they belong.
use macroland::hashmap;

let my_hashmap = hashmap!(
    "Key 1" => "Value 1",
    "Key 2" => "Value 2",
    "Key 3" => "Value 3",
);

// Alternatively, you can create an "uninitialized" version.
let mut my_hashmap = hashmap!(&str, usize);
my_hashmap.insert("Hello!", 100);

btreemap!

Example

// I've used this before, but I am not entirely sure about the difference with it and HashMaps!
use macroland::btreemap;

let my_btreemap = btreemap!(
    "Greetings!" => true,
    "How are you?" => false,
    "I'm good too." => false,
);

// Like the rest.
let mut my_btreemap = btreemap!(&str, bool);
my_btreemap.insert("Hewwo!", false);

arctex!

Example

// Time to make creating an Arc<Mutex<T>> easier for everyone who has been looking for this!
use macroland::arctex;

let my_arctex = arctex!(vec!["Pizza", "Ice Cream", "Celery"])

// All functionality of an Arc<Mutex<T>> is maintained.
println!("{}", my_arctex.lock().unwrap());

cell!

Example

// Welcome to the wonderful world of celling!
use macroland::cell;

let my_cell = cell!(10);

// Everything works!
my_cell.set(20)

println!("{}", my_cell.get());

No runtime deps