An open API service indexing awesome lists of open source software.

https://github.com/dvvcz/constime

Zig's comptime for Rust, with zero dependencies.
https://github.com/dvvcz/constime

compile-time comptime macro metaprogramming proc-macro rust

Last synced: about 2 months ago
JSON representation

Zig's comptime for Rust, with zero dependencies.

Awesome Lists containing this project

README

        

constime


Zig's comptime for Rust, with zero dependencies.



GitHub Actions Workflow Status


Crates.io Version


GitHub Release

## Usage

```bash
cargo add constime
```

Dependencies in `comptime!` can be stored in either `[dependencies]` or `[build-dependencies]`.

If you use build dependencies, you will need to explicitly link with `extern crate` and a `build.rs` file to force them to compile.

## Example

```rust
fn main() {
use constime::comptime;

// Let's use a pure-build time dependency
println!("Here's a fact about the number 5: {}", comptime! {
extern crate ureq;

ureq::get("http://numbersapi.com/5/math")
.call()
.unwrap()
.into_string()
.unwrap()
});

// Standard library works fine too.
println!(
"Compiled {} seconds after unix epoch.",
comptime! {
std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.expect("Time went backwards")
.as_secs()
}
);
}
```

## Note

**You should get autocomplete and error feedback when using the macro.**

This works with temporary files, which currently aren't automatically cleared.

If you notice your project getting a little large, periodically run `cargo clean` to remove these.