28 releases (9 breaking)

0.10.0 May 11, 2024
0.9.0 Mar 16, 2024
0.8.0 Mar 16, 2024
0.5.0 Oct 28, 2023
0.1.0 Jan 10, 2022

#1880 in Development tools

Download history 429/week @ 2024-02-14 441/week @ 2024-02-21 550/week @ 2024-02-28 660/week @ 2024-03-06 3950/week @ 2024-03-13 2793/week @ 2024-03-20 573/week @ 2024-03-27 772/week @ 2024-04-03 510/week @ 2024-04-10 365/week @ 2024-04-17 601/week @ 2024-04-24 821/week @ 2024-05-01 1563/week @ 2024-05-08 904/week @ 2024-05-15 550/week @ 2024-05-22 1302/week @ 2024-05-29

4,360 downloads per month
Used in 89 crates (8 directly)

MIT license

65KB
1K SLoC

Module :: meta_tools

experimental rust-status docs.rs Open in Gitpod discord

Collection of general purpose meta tools.

Basic use-case :: variadic constructor of collections

Among other useful meta tools the module aggregates variadic constructors of collections. For example macro hmap! for constructing a hash map.

use meta_tools::*;

let meta_map = hmap! { 3 => 13 };
let mut std_map = std::collections::HashMap::new();
std_map.insert( 3, 13 );
assert_eq!( meta_map, std_map );

Basic Use Case :: function-style call

Apply a macro for each element of a list.

Macro for_each may be called either in function-style way or in map-style way. Pass name of macro to apply to elements as the first arguments and elements after the macro name. Use comma as delimiter.

use meta_tools::*;
for_each!( dbg, "a", "b", "c" );

// generates
dbg!( "a" );
dbg!( "b" );
dbg!( "c" );

To add to your project

cargo add meta_tools

Try out from the repository

git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/meta_tools_trivial
cargo run

Dependencies

~1.7–2.2MB
~43K SLoC