6 releases

0.2.5 Aug 14, 2021
0.2.4 Aug 13, 2021
0.2.0 Jul 25, 2021
0.1.3 Jul 14, 2021
0.1.2-alpha.1 Mar 13, 2020

#778 in Rust patterns


475 lines

Constrained Type

On the fly value objects in Rust

crates.io Documentation Version MIT or Apache 2.0 licensed Dependency Status
build status Coverage Status downloads

This is a simple project to help create on the fly value objects aka constrained types.

It provides some helper functions to construct these from Rust primitives and turn them into domain primitives, new types, value objects, you name it.


Constrained types guarantee valid state and behaviour from dynamic runtime inputs after construction.

This can be useful when creating simple wrapper types, so called newtypes, value objects or domain primitives.

If an input does not meet the validation criteria, it returns an error result instead.

The goal is to remove defensive code statements, ease implementing business invariants and guarantee correct state at runtime.

Heavily inspired by "Domain Modelling Made Functional".

For more complex types, please take a look at the various builder crates.


~61K SLoC