Adds several compile time checks for const generics.
Idea was based off of this reddit post.
```rust
struct AlphabeticTest
// All letters are alphabetic, check passes. let pass = AlphabeticTest::<'a'>; // Compiles let pass = AlphabeticTest::<'b'>; // Compiles let pass = AlphabeticTest::<'c'>; // Compiles
// Letters are not alphabetic, check fails. let fail = AlphabeticTest::<'1'>; // Compile error! let fail = AlphabeticTest::<'2'>; // Compile error! let fail = AlphabeticTest::<'3'>; // Compile error! ```
Custom checks can be implemented as well:
```rust
const fn isbinary(num: u8) -> bool { num == 0 || num == 1 }
struct BinaryOnly
let pass = BinaryOnly::<0>; // Compiles let pass = BinaryOnly::<1>; // Compiles
let fail = BinaryOnly::<2>; // Compiler error! ```
Checks can also be defined with the check!
macro:
rust
check! { u8 =>
/// Matches all binary numbers (0, 1)
Binary(
passes: 0, 1
fails: 2, 3, 4
): |N| (N == 0 || N == 1)
}
Full list of checks can be found on the docs.rs page.