logo
Expand description

Tools for writing procedural macroses.

Module :: proc_macro_tools

experimental rust-status docs.rs Open in Gitpod discord

Tools for writing procedural macroses.

Sample

#[ cfg( feature = "use_std" ) ]
{
  use proc_macro_tools::*;

  let code = qt!( core::option::Option< i8, i16, i32, i64 > );
  let tree_type = syn::parse2::< syn::Type >( code ).unwrap();
  let got = type_parameters( &tree_type, 0..=2 );
  got.iter().for_each( | e | println!( "{}", qt!( #e ) ) );
  /* print :
    i8
    i16
    i32
  */
}

To add to your project

cargo add proc_macro_tools

Try out from the repository

git clone https://github.com/Wandalen/wTools
cd wTools
cd sample/rust/proc_macro_tools_trivial
cargo run

Re-exports

pub use super::exposed::*;

Modules

Container kind.

Dependencies of the module.

Exposed namespace of the module.

Analyze generic to provide more information.

Helpers.

Trait name.

Parented namespace of the module.

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

Protected namespace of the module.

Quantifiers like Pair and Many.

Split with name.

Syntax.

Macros

Macro for diagnostics purpose to diagnose source code behind it and export it into a string.

Macro to export source code behind a syntax tree into a string.

Macro for diagnostics purpose to print both syntax tree and source code behind it without syntax tree.

Macro to generate syn error either with span of a syntax tree element or with default one proc_macro2::Span::call_site().

Macro for diagnostics purpose to export both syntax tree and source code behind it into a string.

Macro for diagnostics purpose to print both syntax tree and source code behind it with syntax tree.