Skip to content

DvvCz/constime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

constime

Zig's comptime for Rust, with zero dependencies.

Usage

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

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.