#assert #const #generics

nightly const-assert

Assert struct for const generics

2 stable releases

1.0.1 Jul 31, 2023
1.0.0 Oct 3, 2022

#2519 in Rust patterns

Download history 873/week @ 2024-01-05 586/week @ 2024-01-12 488/week @ 2024-01-19 469/week @ 2024-01-26 351/week @ 2024-02-02 427/week @ 2024-02-09 413/week @ 2024-02-16 481/week @ 2024-02-23 469/week @ 2024-03-01 449/week @ 2024-03-08 451/week @ 2024-03-15 389/week @ 2024-03-22 378/week @ 2024-03-29 422/week @ 2024-04-05 356/week @ 2024-04-12 286/week @ 2024-04-19

1,496 downloads per month
Used in 4 crates

MIT license

3KB

License Cargo Documentation

Assert is used to create generic trait bounds:

#![allow(incomplete_features)]
#![feature(generic_const_exprs)]

use const_assert::{Assert, IsTrue, IsFalse};

struct Buffer<const N: usize> {
  inner: [usize; N],
}

impl<const N: usize> Buffer<N>
where
  Assert<{ N == N.next_power_of_two() }>: IsTrue,
  Assert<{ N == 1 }>: IsFalse
{
  pub const fn new() -> Self {
      Buffer { inner: [0; N] }
  }
}

static BUFFER: Buffer<1024> = Buffer::new();

lib.rs:

Assert is used to create generic trait bounds:

#![allow(incomplete_features)]
#![feature(generic_const_exprs)]

use const_assert::{Assert, IsTrue, IsFalse};

struct Buffer<const N: usize> {
  inner: [usize; N],
}

impl<const N: usize> Buffer<N>
where
  Assert<{ N == N.next_power_of_two() }>: IsTrue,
  Assert<{ N == 1 }>: IsFalse
{
  pub const fn new() -> Self {
      Buffer { inner: [0; N] }
  }
}

static BUFFER: Buffer<1024> = Buffer::new();

No runtime deps