| # num |
| |
| [![crate](https://img.shields.io/crates/v/num.svg)](https://crates.io/crates/num) |
| [![documentation](https://docs.rs/num/badge.svg)](https://docs.rs/num) |
| [![minimum rustc 1.60](https://img.shields.io/badge/rustc-1.60+-red.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) |
| [![build status](https://github.com/rust-num/num/workflows/master/badge.svg)](https://github.com/rust-num/num/actions) |
| |
| A collection of numeric types and traits for Rust. |
| |
| This includes new types for big integers, rationals (aka fractions), and complex numbers, |
| new traits for generic programming on numeric properties like `Integer`, |
| and generic range iterators. |
| |
| `num` is a meta-crate, re-exporting items from these sub-crates: |
| |
| | Repository | Crate | Documentation | |
| | ---------- | ----- | ------------- | |
| | [`num-bigint`] | [![crate][bigint-cb]][bigint-c] | [![documentation][bigint-db]][bigint-d] |
| | [`num-complex`] | [![crate][complex-cb]][complex-c] | [![documentation][complex-db]][complex-d] |
| | [`num-integer`] | [![crate][integer-cb]][integer-c] | [![documentation][integer-db]][integer-d] |
| | [`num-iter`] | [![crate][iter-cb]][iter-c] | [![documentation][iter-db]][iter-d] |
| | [`num-rational`] | [![crate][rational-cb]][rational-c] | [![documentation][rational-db]][rational-d] |
| | [`num-traits`] | [![crate][traits-cb]][traits-c] | [![documentation][traits-db]][traits-d] |
| | ([`num-derive`]) | [![crate][derive-cb]][derive-c] | [![documentation][derive-db]][derive-d] |
| |
| Note: `num-derive` is listed here for reference, but it's not directly included |
| in `num`. This is a `proc-macro` crate for deriving some of `num`'s traits. |
| |
| ## Usage |
| |
| Add this to your `Cargo.toml`: |
| |
| ```toml |
| [dependencies] |
| num = "0.4" |
| ``` |
| |
| ## Features |
| |
| This crate can be used without the standard library (`#![no_std]`) by disabling |
| the default `std` feature. Use this in `Cargo.toml`: |
| |
| ```toml |
| [dependencies.num] |
| version = "0.4" |
| default-features = false |
| ``` |
| |
| The `num-bigint` crate requires the `std` feature, or the `alloc` feature may |
| be used instead with Rust 1.36 and later. Other sub-crates may also have |
| limited functionality when used without `std`. |
| |
| The `libm` feature uses pure-Rust floating point implementations in `no_std` |
| builds, enabling the `Float` trait and related `Complex` methods. |
| |
| The `rand` feature enables randomization traits in `num-bigint` and |
| `num-complex`. |
| |
| The `serde` feature enables serialization for types in `num-bigint`, |
| `num-complex`, and `num-rational`. |
| |
| The `num` meta-crate no longer supports features to toggle the inclusion of |
| the individual sub-crates. If you need such control, you are recommended to |
| directly depend on your required crates instead. |
| |
| ## Releases |
| |
| Release notes are available in [RELEASES.md](RELEASES.md). |
| |
| ## Compatibility |
| |
| The `num` crate as a whole is tested for rustc 1.60 and greater. |
| |
| The `num-traits`, `num-integer`, and `num-iter` crates are individually tested |
| for rustc 1.8 and greater, if you require such older compatibility. |
| |
| ## License |
| |
| Licensed under either of |
| |
| * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) |
| * [MIT license](http://opensource.org/licenses/MIT) |
| |
| 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. |
| |
| |
| [`num-bigint`]: https://github.com/rust-num/num-bigint |
| [bigint-c]: https://crates.io/crates/num-bigint |
| [bigint-cb]: https://img.shields.io/crates/v/num-bigint.svg |
| [bigint-d]: https://docs.rs/num-bigint/ |
| [bigint-db]: https://docs.rs/num-bigint/badge.svg |
| |
| [`num-complex`]: https://github.com/rust-num/num-complex |
| [complex-c]: https://crates.io/crates/num-complex |
| [complex-cb]: https://img.shields.io/crates/v/num-complex.svg |
| [complex-d]: https://docs.rs/num-complex/ |
| [complex-db]: https://docs.rs/num-complex/badge.svg |
| |
| [`num-derive`]: https://github.com/rust-num/num-derive |
| [derive-c]: https://crates.io/crates/num-derive |
| [derive-cb]: https://img.shields.io/crates/v/num-derive.svg |
| [derive-d]: https://docs.rs/num-derive/ |
| [derive-db]: https://docs.rs/num-derive/badge.svg |
| |
| [`num-integer`]: https://github.com/rust-num/num-integer |
| [integer-c]: https://crates.io/crates/num-integer |
| [integer-cb]: https://img.shields.io/crates/v/num-integer.svg |
| [integer-d]: https://docs.rs/num-integer/ |
| [integer-db]: https://docs.rs/num-integer/badge.svg |
| |
| [`num-iter`]: https://github.com/rust-num/num-iter |
| [iter-c]: https://crates.io/crates/num-iter |
| [iter-cb]: https://img.shields.io/crates/v/num-iter.svg |
| [iter-d]: https://docs.rs/num-iter/ |
| [iter-db]: https://docs.rs/num-iter/badge.svg |
| |
| [`num-rational`]: https://github.com/rust-num/num-rational |
| [rational-c]: https://crates.io/crates/num-rational |
| [rational-cb]: https://img.shields.io/crates/v/num-rational.svg |
| [rational-d]: https://docs.rs/num-rational/ |
| [rational-db]: https://docs.rs/num-rational/badge.svg |
| |
| [`num-traits`]: https://github.com/rust-num/num-traits |
| [traits-c]: https://crates.io/crates/num-traits |
| [traits-cb]: https://img.shields.io/crates/v/num-traits.svg |
| [traits-d]: https://docs.rs/num-traits/ |
| [traits-db]: https://docs.rs/num-traits/badge.svg |