platform_num/lib.rs
1//! # platform_num
2//!
3//! Numeric traits for the [Links Platform](https://github.com/linksplatform).
4//!
5//! This crate provides a set of marker and conversion traits that abstract
6//! over Rust's primitive integer types. They are used throughout the Links
7//! Platform ecosystem to write generic code that works with any integer
8//! type while preserving type safety.
9//!
10//! ## Traits
11//!
12//! | Trait | Description |
13//! |-------|-------------|
14//! | [`Number`] | Base numeric trait — any `PrimInt + Default + Debug + AsPrimitive<usize> + ToPrimitive` |
15//! | [`SignedNumber`] | Extends [`Number`] with signed operations (`Signed + FromPrimitive`) |
16//! | [`ToSigned`] | Converts an unsigned type to its signed counterpart (e.g. `u32` → `i32`) |
17//! | [`MaxValue`] | Provides a `MAX` associated constant for every primitive integer type |
18//! | [`LinkReference`] | Composite trait for link identifiers — unsigned, hashable, displayable, thread-safe |
19//!
20//! ## Example
21//!
22//! ```
23//! use platform_num::{LinkReference, MaxValue, Number, SignedNumber, ToSigned};
24//!
25//! fn max_link<T: LinkReference>() -> T {
26//! T::MAX
27//! }
28//!
29//! assert_eq!(max_link::<u32>(), u32::MAX);
30//! ```
31
32mod imp;
33
34pub use imp::{LinkReference, MaxValue, Number, SignedNumber, ToSigned};