Skip to content
vic

blyxyas/typed_macros

Add types to your macros arguments in Rust

blyxyas/typed_macros.json
{
"createdAt": "2022-10-12T00:08:57Z",
"defaultBranch": "master",
"description": "Add types to your macros arguments in Rust",
"fullName": "blyxyas/typed_macros",
"homepage": "https://crates.io/crates/typed_macros",
"language": "Rust",
"name": "typed_macros",
"pushedAt": "2022-10-14T22:44:26Z",
"stargazersCount": 13,
"topics": [
"crate",
"macros",
"rust",
"rust-lang",
"rust-macro"
],
"updatedAt": "2025-11-24T14:44:06Z",
"url": "https://github.com/blyxyas/typed_macros"
}

A traditional macro can’t natively have arguments with type, they can only accept a handful of meta types (expr, ident, vis…), with this crate you can explicitely say the type of the argument you want the macro to take.

Add the following dependency to your Cargo.toml file:

[dependencies]
typed_macros = "1.0.6"

And check the documentation on how to use it.

#![feature(macro_metavar_expr)]
use typed_macros::macrox;
macrox! {
/// You can even use attributes!
#[macro_export]
macro foo(bar: String) {
// Do something with bar...
}
}
fn main() {
foo!(String::from("Some string")); // <- This won't throw an error.
foo!(9u32); // <- This will throw an error.
}

The main macro is [macrox][macrox], it takes an input like macro name(arg1: type1, arg2: type2) { /* Code */ } Take a look to the [documentation][macrox] for a more in-depth approach to this macro. (Including multibranched macros!)

You can run cargo test in the root directory, but you’ll only see an error (an intended error) because the macro this_should_warn was asking for a u32 type, and the test tried to use it with a String.

[macrox] !: https://docs.rs/typed_macros/latest/typed_macros/macro.macrox.html

Contributing is always welcomed, both in the form of code, documentation, ideas, etc… As the project is very simple there isn’t a guide for contributing. If this is your first time contributing to an open source project maybe this guide helps you.

Thanks to all the people that starred the project, my monkey brain likes when number grow big.

Stargazers repo roster for @blyxyas/typed_macros

This software uses the MIT license. More info about this license is in the LICENSE file.