Skip to content
This repository was archived by the owner on Apr 11, 2026. It is now read-only.

Noam2Stein/newnum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

newnum

This crate is deprecated. Use num or num-primitive instead.

newnum was an attempt to create well-structured number traits. It defines many small traits like Round and MinMax to cover common number operations.

One problem with this approach is that many function names mean different things depending on the type. For example, integer signum returns 0 for 0, but floating-point signum returns +-1.0 for +-0.0. It is hard to write generic math code when semantics are not defined.

Usually when writing generic math code you already know what semantics you want. In that case, the easiest solution is to define a custom trait specifically designed for your situation.

See num-primitive for traits implemented strictly for primitives. See num for non-deprecated general purpose number traits.

Original documentation

The newnum Rust crate is an alternative to the num crate that splits the Rust number API and hierarchy into traits, with a cleaner design than num.

The design of this crate follows these rules:

  • the Num trait isn't restricted to primitives, or to types that can represent specific common values (0, 1...).

  • the Prim, SignedPrim, UnsignedPrim, Int, UInt, SInt, and Float traits are restricted to primitives, but allow non std types to implement them as long as they follow primitive restrictions.

  • API traits (Round, Root, Trig...) aren't restricted to Num and are designed for non number support, for example <Angle as Trig>::Output = Ratio.

About

Deprecated: General-purpose number traits

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Contributors

Languages