buns 0.1.0

Create simple code templates - basically macro_rules lite
Documentation

A simple way to write repeatable code anywhere, by defining buns and toppings. 🍞

Sandwich / Compose

This can be seen as format!(), but for code:

  1. Buns: Write the code, use ^0 ^1 .. ^N as (Topping) placeholders
  2. Topping: Write code inserts: #0^1^..^N, where numbers = any code
  3. Why tho? The point is, you can repeat 2. and make infinite sandwiches. 🥪
buns::sandwich!{ 
    const ^0: u32 = ^1; // Buns
    #TEST^10 #OMEGA^59  // Toppings
}
// Will generate:
// const TEST: u32 = 10;
// const OMEGA: u32 = 59;

Prepare / Preset

This can be seen as a simplified macro_rules!{}, where you prepare named Buns and add the Toppings later using the generated macro (The code (Buns) is automatically added to the macro documentation):

buns::prepare!{
    burger           // Name
    let a = ^0 + ^0; // Buns
    println!("{a}"); // "
}

fn main(){
    burger!{#1 #2 #4+4 #4 #2*2} // Toppings
    // prints: 2 4 16 8 8
}

Flexibility

You can use any other magical token macro like paste to add functionality:

buns::sandwich!{
    paste::paste!{const [<^1 _ ^0:upper>]: ^0 = ^2;}
    #u32^BREAD^100 #f32^BREAD^12.0
}
// Will generate:
// const BREAD_U32: u32 = 100;
// const BREAD_F32: f32 = 12.9;

License