Skip to main content

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 {}