# preprocessor


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}");
}
```