Skip to content

Commit

Permalink
Adapt NonZero impls to fit MSRV
Browse files Browse the repository at this point in the history
  • Loading branch information
GnomedDev committed Jul 8, 2024
1 parent 98a1d9b commit ba2fb4c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 20 deletions.
48 changes: 32 additions & 16 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
#[cfg(any(doc, test))]
extern crate alloc;

use core::num::*;

#[cfg(any(doc, test))]
use alloc::string::ToString;

Expand Down Expand Up @@ -79,39 +81,39 @@ impl ToArrayString for bool {
impl_float!(ToArrayString<16> for f32);
impl_float!(ToArrayString<24> for f64);

impl_int!(ToArrayString<3> for u8);
impl_int!(ToArrayString<4> for i8);
impl_int!(ToArrayString<5> for u16);
impl_int!(ToArrayString<6> for i16);
impl_int!(ToArrayString<10> for u32);
impl_int!(ToArrayString<11> for i32);
impl_int!(ToArrayString<20> for u64);
impl_int!(ToArrayString<21> for i64);
impl_int!(ToArrayString<39> for u128);
impl_int!(ToArrayString<40> for i128);
impl_int!(ToArrayString<3> for (u8, NonZeroU8));
impl_int!(ToArrayString<4> for (i8, NonZeroI8));
impl_int!(ToArrayString<5> for (u16, NonZeroU16));
impl_int!(ToArrayString<6> for (i16, NonZeroI16));
impl_int!(ToArrayString<10> for (u32, NonZeroU32));
impl_int!(ToArrayString<11> for (i32, NonZeroI32));
impl_int!(ToArrayString<20> for (u64, NonZeroU64));
impl_int!(ToArrayString<21> for (i64, NonZeroI64));
impl_int!(ToArrayString<39> for (u128, NonZeroU128));
impl_int!(ToArrayString<40> for (i128, NonZeroI128));

#[cfg(target_pointer_width = "16")]
mod usize_impls {
use super::*;

impl_int!(ToArrayString<5> for usize);
impl_int!(ToArrayString<6> for isize);
impl_int!(ToArrayString<5> for (usize, NonZeroUsize));
impl_int!(ToArrayString<6> for (isize, NonZeroIsize));
}

#[cfg(target_pointer_width = "32")]
mod usize_impls {
use super::*;

impl_int!(ToArrayString<10> for usize);
impl_int!(ToArrayString<11> for isize);
impl_int!(ToArrayString<10> for (usize, NonZeroUsize));
impl_int!(ToArrayString<11> for (isize, NonZeroIsize));
}

#[cfg(target_pointer_width = "64")]
mod usize_impls {
use super::*;

impl_int!(ToArrayString<20> for usize);
impl_int!(ToArrayString<21> for isize);
impl_int!(ToArrayString<20> for (usize, NonZeroUsize));
impl_int!(ToArrayString<21> for (isize, NonZeroIsize));
}

#[cfg(test)]
Expand All @@ -124,4 +126,18 @@ mod tests {
}

crate::macros::generate_test!(u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize, isize);
crate::macros::generate_test!(
NonZeroU8,
NonZeroI8,
NonZeroU16,
NonZeroI16,
NonZeroU32,
NonZeroI32,
NonZeroU64,
NonZeroI64,
NonZeroU128,
NonZeroI128,
NonZeroUsize,
NonZeroIsize
);
}
7 changes: 3 additions & 4 deletions src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ gen_fmt_to_buf!(fmt_int_to_buf(itoa::Integer));
gen_fmt_to_buf!(fmt_float_to_buf(ryu::Float));

macro_rules! impl_int {
(ToArrayString<$len:literal> for $type:ty) => {
(ToArrayString<$len:literal> for ($type:ty, $non_zero:ty)) => {
impl ToArrayString for $type {
const MAX_LENGTH: usize = $len;
type ArrayString = ArrayString<$len>;
Expand All @@ -24,7 +24,7 @@ macro_rules! impl_int {
}
}

impl ToArrayString for core::num::NonZero<$type> {
impl ToArrayString for $non_zero {
const MAX_LENGTH: usize = $len;
type ArrayString = ArrayString<$len>;

Expand Down Expand Up @@ -54,9 +54,8 @@ macro_rules! generate_test {
($($type:ident),*) => {
paste::paste!($(
#[test]
fn [<check_ $type>]() {
fn [<check_ $type:lower>]() {
test_impl($type::MIN, $type::MAX);
test_impl(core::num::NonZero::<$type>::MIN, core::num::NonZero::<$type>::MAX);
}
)*);
};
Expand Down

0 comments on commit ba2fb4c

Please sign in to comment.