[][src]Crate compile_type_eq

This crate help you check type equality at compile time.

Usage:

use compile_type_eq::*;

assert_types_eq::<i32, i32>();
assert_types_not_eq::<i32, u32, _>();
use compile_type_eq::*;

assert_types_eq::<i32, u32>();
assert_types_not_eq::<i32, i32, _>();

You can use a trait for checking of equality instead:

use compile_type_eq::CompileEq;

fn do_some_when_not_eq<T, U, BecauseTypesMustBeNotEq>(t: T, u: U) -> String
where
    T: CompileEq<U, BecauseTypesMustBeNotEq>
{
    "Some".to_string()
}

do_some_when_not_eq(1, "a");
use compile_type_eq::CompileEq;

fn do_some_when_not_eq<T, U, BecauseTypesMustBeNotEq>(t: T, u: U) -> String
where
    T: CompileEq<U, BecauseTypesMustBeNotEq>
{
    "Some".to_string()
}

do_some_when_not_eq("a", "b");

Traits

CompileEq

Trait for compile-time equality checking

Functions

assert_types_eq

Checks that the types are eq.

assert_types_not_eq

Checks that the types are not eq.