Skip to main content

Crate const_reify

Crate const_reify 

Source
Expand description

§const-reify

Runtime-to-const-generic bridge via match-table dispatch.

Given a runtime u64 value in 0..=255, dispatches to the corresponding monomorphization of a const-generic type, enabling type-level programming with runtime-determined values.

See DESIGN.md for the design rationale and safety analysis.

§Examples

use const_reify::{reify_const, HasModulus};

let result = reify_const(17, |m| m.modulus());
assert_eq!(result, 17);

Using the reify! macro:

use const_reify::{reify, HasModulus};

reify!(42u64, |m: &dyn HasModulus| {
    assert_eq!(m.modulus(), 42);
});

Re-exports§

pub use nat_reify::reify_nat;
pub use nat_reify::reify_nat2;
pub use nat_reify::reify_nat2_fn;
pub use nat_reify::reify_nat_fn;
pub use nat_reify::FnNat;
pub use nat_reify::FnNat2;
pub use nat_reify::Nat2Callback;
pub use nat_reify::NatCallback;

Modules§

nat_reify
True value→type reification for natural numbers.

Macros§

def_nat2_callback
Define a Nat2Callback struct with minimal boilerplate.
def_nat_callback
Define a NatCallback struct with minimal boilerplate.
reify
Convenience macro for runtime-to-const-generic dispatch.

Structs§

Modular
A const-generic type parameterized by a u64 modulus.

Constants§

MAX_REIFY_VALUE
Maximum supported value for reify_const dispatch.

Traits§

HasModulus
Trait providing access to the const-generic modulus value.

Functions§

reify_const
Dispatch a runtime u64 value to the corresponding Modular<N> monomorphization, passing it to f as a &dyn HasModulus.