logo
Expand description

Collection of general purpose meta tools. Minimal Set.

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

Modules

Dependencies.

Exposed namespace of the module.

Protocol of modularity unifying interface of a module and introducing layers.

Collection of general purpose meta tools.

Orphan namespace of the module.

Prelude to use essentials: use my_module::prelude::*.

Protected namespace of the module.

Protocol of modularity unifying interface of a module and introducing layers.

Macros

Internal impls1 macro. Don’t use.

Literally just a BTreeMap literal with keys and values into’d.

Unwrap braces of token tree and pass its content to the passed callback. If token tree in not braced then it passed to callback as is.

Literally just a BTreeSet literal with values into’d.

Get name of a function.

Macro to rename function.

Split functions.

Split functions.

Module :: for_each

Literally just a BinaryHeap literal with values into’d.

Literally just a HashMap literal with keys and values into’d.

Literally just a HashSet literal with values into’d.

Macro which returns its input as is.

Define implementation putting each function under a macro.

Define implementation putting each function under a macro.

Define implementation putting each function under a macro.

Macros to put each function under a named macro to index every function in a class.

Index of items.

Literally just a LinkedList literal with values into’d.

Protocol of modularity unifying interface of a module and introducing layers.

Define implementation putting each function under a macro and adding attribute #[ test ].

Define implementation putting each function under a macro and adding attribute #[ test ].

Index of items.

Literally just a VecDeque literal with values into’d.