Expand description
§Module :: meta_tools
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
Modules§
- dependency
- Namespace with dependencies.
- exposed
- Exposed namespace of the module.
- meta
- Collection of general purpose meta tools.
- orphan
- Orphan namespace of the module.
- own
- Own namespace of the module.
- prelude
- Prelude to use essentials:
use my_module::prelude::*
.
Macros§
- _impls_
callback - Internal impls1 macro. Don’t use.
- bmap
- Literally just a BTreeMap literal with keys and values into’d.
- braces_
unwrap - 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.
- bset
- Literally just a BTreeSet literal with values into’d.
- fn_name
- Get name of a function.
- fn_
rename - Macro to rename function.
- fns
- Split functions.
- fns2
- Split functions.
- for_
each - heap
- Literally just a BinaryHeap literal with values into’d.
- hmap
- Literally just a HashMap literal with keys and values into’d.
- hset
- Literally just a HashSet literal with values into’d.
- identity
- Macro which returns its input as is.
- impls
- Macros to put each function under a named macro to index every function in a class.
- impls1
- Define implementation putting each function under a macro.
- impls2
- Define implementation putting each function under a macro.
- impls3
- Macros to put each function under a named macro to index every function in a class.
- impls_
optional - Define implementation putting each function under a macro.
- index
- Index of items.
- list
- Literally just a LinkedList literal with values into’d.
- meta_
idents_ concat - mod_
interface - Protocol of modularity unifying interface of a module and introducing layers.
- tests_
impls - Define implementation putting each function under a macro and adding attribute
#[ test ]
. - tests_
impls_ optional - Define implementation putting each function under a macro and adding attribute
#[ test ]
. - tests_
index - Index of items.
- vecd
- Literally just a VecDeque literal with values into’d.