Skip to content
/ rukt Public

Rust dialect for token-based compile-time scripting

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

vberlier/rukt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rukt

Test License Crates.io Crates.io Documentation

Rust dialect for token-based compile-time scripting.

use rukt::rukt;

rukt! {
    pub(crate) let operations = {
        add: +,
        sub: -,
        mul: *,
        div: /,
    };
}

rukt! {
    let {$($name:ident: $operator:tt,)*} = operations;
    expand {
        $(
            fn $name(a: u32, b: u32) -> u32 {
                a $operator b
            }
        )*
    }
}

Introduction

Rukt is a subset of Rust where you manipulate tokens instead of values.

It executes entirely at compile-time. It lets you store arbitrary token trees in variables, operate on these token trees using ordinary expressions and control flow, and substitute them anywhere in regular Rust code.

Rukt is designed to be as unsurprising as possible. It ports well-established Rust idioms to the realm of macro_rules using polished syntax you're already used to.

This is a lightweight, no-dependency crate, backed entirely by declarative macros. There's no procedural macro involved. No unstable features.

Documentation

License

Licensed under MIT or Apache-2.0.

About

Rust dialect for token-based compile-time scripting

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages