const-num-traits 0.1.2

Const-friendly numeric traits for generic mathematics (fork of num-traits)
Documentation

const-num-traits

crate documentation minimum rustc 1.86 build status

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 in const (via the c0nst macro);
  • exposes newer core integer and float operations that num-traits yet does not, such as widening_mul;
  • is intentionally API-breaking with num-traits, to keep the const and non-const views of the API as close as possible.

Usage

Add this to your Cargo.toml:

[dependencies]
const-num-traits = "0.1"

Enable the const trait surface with the nightly feature on a nightly compiler:

[dependencies]
const-num-traits = { version = "0.1", features = ["nightly"] }

Features

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.1"
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.

Compatibility

The const-num-traits crate is tested for rustc 1.86 and greater.

License

Licensed under either of

at your option.

Contribution

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.