#unique-id #id #macro #struct #unique #static

no-std numid

A macro for generating structures which behave like numerical id

11 releases

0.2.9 Dec 15, 2019
0.2.8 Nov 9, 2019
0.2.5 Oct 29, 2019
0.1.2 Oct 14, 2019

#174 in No standard library

MIT license

24KB
394 lines

numid

Build Status Crate Documentation Minimum rustc version License

This crate provide the numid! macro for generating structures which behave like numerical id.

Example

use numid::numid;

numid!(pub struct MyId -> 10);

fn main() {
    let id1 = MyId::new();
    let id2 = MyId::new();

    assert!(id2 > id1);
    assert_eq!(id1.value(), 11);
    assert_eq!(id2.value(), 12);
}

Usage

Add this to your Cargo.toml :

[dependencies]
numid = "0.2"

You can now create all the ids you want in your programs :

use numid::numid;

numid!(struct Id); // basic id
numid!(pub struct Id2); // public
numid!(pub(crate) struct Id3); // restricted public
numid!(#[doc(hidden)] struct Id4); // with attribut
numid!(struct Id5 -> 100); // init const specified
numid!(struct Id6(u128)); // type specified
numid!(@CloneIsReproduce struct Id7); // with in-macro special attribute
numid!(#[doc(hidden)] @CloneIsNew pub struct Id8(u32) -> 10); // all the thing you can want

Consult the documentation for more information.

TODO list

  • serde feature

Dependencies