Skip to main content

newtype_ord

Macro newtype_ord 

Source
macro_rules! newtype_ord {
    ($name:ident, i8) => { ... };
    ($name:ident, u8) => { ... };
    ($name:ident, i16) => { ... };
    ($name:ident, u16) => { ... };
    ($name:ident, i32) => { ... };
    ($name:ident, u32) => { ... };
    ($name:ident, i64) => { ... };
    ($name:ident, u64) => { ... };
    ($name:ident, i128) => { ... };
    ($name:ident, u128) => { ... };
    ($name:ident, isize) => { ... };
    ($name:ident, usize) => { ... };
    ($name:ident, i8; $($derive:path),+) => { ... };
    ($name:ident, u8; $($derive:path),+) => { ... };
    ($name:ident, i16; $($derive:path),+) => { ... };
    ($name:ident, u16; $($derive:path),+) => { ... };
    ($name:ident, i32; $($derive:path),+) => { ... };
    ($name:ident, u32; $($derive:path),+) => { ... };
    ($name:ident, i64; $($derive:path),+) => { ... };
    ($name:ident, u64; $($derive:path),+) => { ... };
    ($name:ident, i128; $($derive:path),+) => { ... };
    ($name:ident, u128; $($derive:path),+) => { ... };
    ($name:ident, isize; $($derive:path),+) => { ... };
    ($name:ident, usize; $($derive:path),+) => { ... };
    ($name:ident, f32) => { ... };
    ($name:ident, f64) => { ... };
    ($name:ident, f32; $($derive:path),+) => { ... };
    ($name:ident, f64; $($derive:path),+) => { ... };
    ($name:ident, String) => { ... };
    ($name:ident, String; $($derive:path),+) => { ... };
}
Expand description

The newtype_ord! macro extends the functionality provided with newtype! by implementing the PartialOrd and Ord traits (when possible).

Example:

use newtypes::*;
use serde::{Deserialize, Serialize};

newtype_ord!(Rank, u16);

newtype_ord!(TicketNumber, u16; Serialize, Deserialize);

NOTE: It only works for integers, floating point numbers, and String.