preprocessor 0.1.0

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


![version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ffawdlstty%2Fpreprocessor%2Fmain%2F/preprocessor/Cargo.toml&query=package.version&label=version)
![status](https://img.shields.io/github/actions/workflow/status/fawdlstty/preprocessor/rust.yml)

English | [简体中文]README.zh.md

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

## Installation


```shell
cargo add preprocessor
cargo add chrono # Required for the test code below
```

## Usage


### `#[optimize]` — Function-level attribute macro


```rust
#[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


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