[][src]Crate static_assertions

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.0.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.

This code runs with edition 2018
extern crate static_assertions as sa;

sa::const_assert!(true);

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.

Donate

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

assert_cfg

Asserts that a given configuration is set.

assert_eq_align

Asserts that types are equal in alignment.

assert_eq_size

Asserts that types are equal in size.

assert_eq_size_ptr

Asserts that values pointed to are equal in size.

assert_eq_size_val

Asserts that values are equal in size.

assert_fields

Asserts that the type has the given fields.

assert_impl_all

Asserts that the type implements all of the given traits.

assert_not_impl_all

Asserts that the type does not implement all of the given traits.

assert_not_impl_any

Asserts that the type does not implement any of the given traits.

assert_obj_safe

Asserts that the traits support dynamic dispatch (object-safety).

assert_type_eq_all

Asserts that all types in a list are equal to each other.

assert_type_ne_all

Asserts that all types are not equal to each other.

const_assert

Asserts that constant expressions evaluate to true.

const_assert_eq

Asserts that constants are equal in value.

const_assert_ne

Asserts that constants are not equal in value.