preprocessor 0.1.2

Compile-time computation macro library — analyzes computable sub-expressions in code and evaluates parts that can be executed at compile time
Documentation

preprocessor

version status

English | 简体中文

Compile-time computation macro library — analyzes computable sub-expressions in code and evaluates parts that can be executed at compile time.

Installation

cargo add preprocessor

Usage

#[optimize] — Function-level attribute macro

cargo add chrono
#[preprocessor::optimize]
fn compute() -> String {
    chrono::Local::now()
        .naive_local()
        .format("%Y-%m-%d %H:%M:%S")
        .to_string()
}

fn main() {
    let time = compute();
    println!("build_time: {time}");
}

op! — Expression-level macro

cargo add chrono
fn main() {
    let time = preprocessor::op!(
        chrono::Local::now()
            .naive_local()
            .format("%Y-%m-%d %H:%M:%S")
            .to_string()
    );
    println!("build_time: {time}");
}

Async Support

The op! macro fully supports async/await and the ? operator, enabling compile-time evaluation of asynchronous code:

cargo add tokio reqwest
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let text = preprocessor::op!({
        let response = reqwest::get("https://www.fawdlstty.com").await?;
        response.text().await?
    });
    println!("{}", text);
    Ok(())
}

Key Features:

  • ✅ Full async/await support
  • ? error propagation operator
  • ✅ Compile-time evaluation of async operations