Skip to content

Generate Strongly Typed Id types in Rust

License

Notifications You must be signed in to change notification settings

vbfox/stidgen.rs

Repository files navigation

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);

About

Generate Strongly Typed Id types in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published