Expand description

Banner

Assertions to ensure correct assumptions about constants, types, and more.

All checks provided by this crate are performed at compile-time. This allows for finding errors quickly and early when it comes to ensuring certain features or aspects of a codebase. These macros are especially important when exposing a public API that requires types to be the same size or implement certain traits.

Usage

This crate is available on crates.io and can be used by adding the following to your project’s Cargo.toml:

[dependencies]
static_assertions = "1.1.0"

and this to your crate root (main.rs or lib.rs):

#[macro_use]
extern crate static_assertions;

When using Rust 2018 edition, the following shorthand can help if having #[macro_use] is undesirable.

extern crate static_assertions as sa;

sa::const_assert!(true);

Procedural Extensions

As an extension crate proc_static_assertions adds a number of new assertions to this. These are implemented as procedural macros, hence the “proc” prefix. As a result, they have a bit more visibility over what’s being asserted over than normal macros would.

It can be enabled via the proc feature flag in your Cargo.toml:

[dependencies]
static_assertions = { version = "1.1.0", features = ["proc"] }

Examples

Very thorough examples are provided in the docs for each individual macro. Failure case examples are also documented.

Changes

See CHANGELOG.md for an exhaustive list of what has changed from one version to another.

This project is made freely available (as in free beer), but unfortunately not all beer is free! So, if you would like to buy me a beer (or coffee or more), then consider supporting my work that’s benefited your project and thousands of others.

Become a Patron! Buy me a coffee

Macros