Releases: codefonsi/rust-tagged
Release list
v0.5.0
v0.1.0
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()or42.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 likeuuidandchrono. -
✅ 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 overTagged<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-taggedby Point-Free -
Haskell’s phantom and newtype idioms
🔗 Resources
-
📦 Crate: crates.io/crates/rust-tagged
-
📘 Docs: docs.rs/rust-tagged
-
🛠 GitHub: github.com/codefonsi/rust-tagged
-
📚 Learn Tagged Unions: Wikipedia
Would you like me to generate a changelog file (CHANGELOG.md) or a GitHub release template from this?
📦 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()or42.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
[tagged-core](https://crates.io/crates/rust-tagged): core abstraction overTagged<T, Tag>
✅ 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 layoutswift-taggedby Point-Free- Haskell’s phantom and newtype idioms
🔗 Resources
- 📦 Crate: [crates.io/crates/rust-tagged](https://crates.io/crates/rust-tagged)
- 📘 Docs: [docs.rs/rust-tagged](https://docs.rs/rust-tagged)
- 🛠 GitHub: [github.com/codefonsi/rust-tagged](https://github.com/codefonsi/rust-tagged)
- 📚 Learn Tagged Unions: [Wikipedia](https://en.wikipedia.org/wiki/Tagged_union)
Would you like me to generate a changelog file (CHANGELOG.md) or a GitHub release template from this?
What's Changed
- The Library Design Proposal by @akashsoni01 in #1
- Basic Example added for tagged by @akashsoni01 in #2
- #5 published v0.1.0 by @akashsoni01 in #4
New Contributors
- @akashsoni01 made their first contribution in #1
Full Changelog: https://github.com/codefonsi/rust-tagged/commits/v0.1.0