nexus_decimal/backing.rs
1//! Backing integer trait for `Decimal<B, D>`.
2//!
3//! Sealed — only `i32`, `i64`, and `i128` implement this. Exists for
4//! the struct bound (`Decimal<B: Backing, D>`), not for method dispatch.
5//! The `impl_decimal_*!` macros handle all method generation.
6
7use core::hash::Hash;
8
9mod sealed {
10 pub trait Sealed {}
11 impl Sealed for i32 {}
12 impl Sealed for i64 {}
13 impl Sealed for i128 {}
14}
15
16/// Marker trait for valid decimal backing types.
17///
18/// Only `i32`, `i64`, and `i128` implement this trait. It is sealed
19/// and cannot be implemented for external types.
20pub trait Backing: Copy + Eq + Ord + Hash + Default + sealed::Sealed {}
21
22impl Backing for i32 {}
23impl Backing for i64 {}
24impl Backing for i128 {}