Skip to content

Latest commit

 

History

History
46 lines (35 loc) · 2.39 KB

Readme.md

File metadata and controls

46 lines (35 loc) · 2.39 KB

Strongly Typed ID types macro

A macro to simplify usage of srongly type ID types instead of plain String, u64 or Guid in Rust codebases.

use stidgen::{Id, id};

#[id]
pub struct UserId(String);

#[id(NoDefaults, Format, Debug)]
pub struct UserId(u64);

While the derive macro can already be used to achieve most of what this macro proposes using it has the following advantages:

  • It's simplier to use for well known types, simply add #[id] to your struct
  • The defaults provide a lot of blanket implementations that might be missed when doing it manually
  • Some features provided don't have corresponding derive macros (AsBytes, AsRef, Borrow)
  • All trivial functions are marked inline

Settings

Default types

For unknown types all features are disabled by default but some types like String have smart defaults.

#[id(Clone, Hash, PartialEq, Eq, PartialOrd, Ord, Display, ToString, Debug, AsBytes, ...)]
pub struct Id(String);