2 releases
new 0.1.1 | Feb 14, 2025 |
---|---|
0.1.0 | Feb 8, 2025 |
#448 in Math
250 downloads per month
12KB
76 lines
num-lazy
num-lazy helps you write numbers for generic-typed functions, reduce typing, and improve readability!
Why Num-Lazy
Let's write a generic circumference function using num-trait
.
fn circumference<T: Float>(radius: T) -> T {
T::from(2.0).unwrap() * T::from(std::f64::consts::PI).unwrap() * radius
}
This doesn't look too bad. But you can imagine it getting out of hand for more complex functions. This is where num-lazy comes to the rescue! Let's implement using num-lazy
.
fn circumference<T: Float>(radius: T) -> T {
two!() * pi!() * radius
}
Quick Start
Install num-lazy by:
>> cargo add num-lazy
Use declare_nums!{T}
to bind num-lazy to generic type T
.
use num_lazy::declare_nums;
use num_traits::Float;
declare_nums!{T}
fn circumference<T: Float>(radius: T) -> T {
two!() * pi!() * radius
}
fn main() {
assert!(circumference(1.0_f64) == 6.283185307179586);
}