Numeric traits for generic mathematics in Rust.
A fork of num-traits. It:
- compiles to ordinary traits on stable Rust — no nightly required — and on a
nightly toolchain the same surface becomes
const trait, usable inconst(via thec0nstmacro); - exposes newer
coreinteger and float operations thatnum-traitsyet does not, such aswidening_mul; - is intentionally API-breaking with
num-traits, to keep theconstand non-constviews of the API as close as possible.
Add this to your Cargo.toml:
[dependencies]
const-num-traits = "0.2"Enable the const trait surface with the nightly feature on a nightly compiler:
[dependencies]
const-num-traits = { version = "0.2", features = ["nightly"] }This crate can be used without the standard library (#![no_std]) by disabling
the default std feature. Use this in Cargo.toml:
[dependencies.const-num-traits]
version = "0.2"
default-features = false
# features = ["libm"] # <--- Uncomment if you wish to use `Float` and `Real` without `std`The Float and Real traits are only available when either std or libm is enabled.
The FloatCore trait is always available. MulAdd and MulAddAssign for f32
and f64 also require std or libm, as do implementations of signed and floating-
point exponents in Pow.
The const-num-traits crate is tested for rustc 1.86 and greater.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.