#meta #fundamental #general-purpose #collection #constructor #set #sample

no-std meta_tools_min

Collection of general purpose meta tools. Minimal Set.

3 releases

0.2.13 Jul 18, 2022
0.2.12 Jul 15, 2022
0.2.11 May 26, 2022

#2401 in Algorithms

Download history 212/week @ 2024-01-11 172/week @ 2024-01-18 159/week @ 2024-01-25 167/week @ 2024-02-01 213/week @ 2024-02-08 391/week @ 2024-02-15 428/week @ 2024-02-22 379/week @ 2024-02-29 1307/week @ 2024-03-07 3435/week @ 2024-03-14 2018/week @ 2024-03-21 536/week @ 2024-03-28 680/week @ 2024-04-04 484/week @ 2024-04-11 347/week @ 2024-04-18 695/week @ 2024-04-25

2,256 downloads per month
Used in 7 crates (via woptions_meta)

MIT license

1MB
29K SLoC

Module :: meta_tools

experimental rust-status docs.rs discord

Collection of general purpose meta tools.

Sample :: variadic constructor of collections

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

#[ cfg( feature = "collection_make" ) ]
{
  use meta_tools_min::*;

  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 );
}

Sample :: 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.

#[ cfg( feature = "for_each" ) ]
{
  use meta_tools_min::*;
  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 sample/rust/meta_tools_trivial
cargo run

Dependencies

~3.5MB
~90K SLoC