Skip to content

Releases: codefonsi/rust-tagged

Release list

v0.5.0

Choose a tag to compare

@codefonsi codefonsi released this 03 Jul 18:54
0e4d033

Added support for rc

v0.1.0

v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@codefonsi codefonsi released this 29 Jun 11:17
56618e7

Here’s a detailed and professional Release Note for rust-tagged v0.1.0, suitable for crates.io, GitHub Releases, and changelogs:


📦 rust-tagged v0.1.0 – Initial Release

We’re excited to announce the first official release of rust-tagged — a lightweight, extensible Rust library for building type-safe ID and domain primitives using tagged types and phantom data.

This release lays the foundation for a robust and ergonomic system of safe newtypes for primitives like String, i32, Uuid, DateTime<Utc>, and more.


🚀 Highlights

  • Tagged Type Core Abstraction
    Tagged<T, Tag> enables strongly typed wrappers over primitive data types using zero-cost type markers.

  • Ergonomic .into() support
    Easily create domain types with "email@example.com".into() or 42.into().

  • Macro Derive Support
    Use #[derive(Tagged)] to auto-generate boilerplate for newtyped structs.

  • Serde Integration (optional)
    Serialize and deserialize tagged types like their inner values.

  • UUID & Chrono Support (optional)
    Works seamlessly with popular crates like uuid and chrono.

  • Compile-Time Safety
    Eliminate errors caused by swapping IDs of the same underlying type by encoding domain logic into the type system.


📦 Crate Layout

  • tagged-core: core abstraction over Tagged<T, Tag>

  • tagged-macros: derive macro #[derive(Tagged)]

  • tagged-serde: serde-related helpers (coming soon)

  • tagged-chrono, tagged-uuid: optional extension crates


✅ What's Next

  • 🧱 #[tagged] attribute macro support for boilerplate-free field tagging

  • 🧪 Validation on construction (e.g., validating email formats)

  • 🛠 More examples and real-world patterns

  • 📖 Cookbook & integration with popular crates like sea-orm, sqlx, etc.


🙌 Acknowledgements

Inspired by ideas from:

  • actix-web's modular crate layout

  • swift-tagged by Point-Free

  • Haskell’s phantom and newtype idioms


🔗 Resources


Would you like me to generate a changelog file (CHANGELOG.md) or a GitHub release template from this?

Here’s a detailed and professional **Release Note for `rust-tagged` v0.1.0**, suitable for crates.io, GitHub Releases, and changelogs:

📦 rust-tagged v0.1.0 – Initial Release

We’re excited to announce the first official release of [rust-tagged](https://crates.io/crates/rust-tagged) — a lightweight, extensible Rust library for building type-safe ID and domain primitives using tagged types and phantom data.

This release lays the foundation for a robust and ergonomic system of safe newtypes for primitives like String, i32, and more.


🚀 Highlights

  • Tagged Type Core Abstraction
    Tagged<T, Tag> enables strongly typed wrappers over primitive data types using zero-cost type markers.

  • Ergonomic .into() support
    Easily create domain types with "email@example.com".into() or 42.into().

  • Compile-Time Safety
    Eliminate errors caused by swapping IDs of the same underlying type by encoding domain logic into the type system.



rust-tagged = { version = "0.1" }

📦 Crate Layout


✅ What's Next

  • tagged-macros: derive macro #[derive(Tagged)]
  • tagged-serde: serde-related helpers (coming soon)
  • tagged-chrono, tagged-uuid: optional extension crates

🔧 Feature Flags

Feature Description
serde Enables Serialize, Deserialize
uuid Enables tagging Uuid types
chrono Enables tagging DateTime<Utc> types

Enable them like this:


🙌 Acknowledgements

Inspired by ideas from:

  • actix-web's modular crate layout
  • swift-tagged by Point-Free
  • Haskell’s phantom and newtype idioms

🔗 Resources


Would you like me to generate a changelog file (CHANGELOG.md) or a GitHub release template from this?

What's Changed

New Contributors

Full Changelog: https://github.com/codefonsi/rust-tagged/commits/v0.1.0