use crateSpecProvider;
use crateSpecError;
use crateValidated;
/// # ValueObjectFactory
///
/// A trait to create a new instance of a value object where a spec
/// is first validated to provide an `Ok(T1)` or an `Err(SpecError)`.
/// # ValueObject
///
/// A value object is an object that encapsulates a simple
/// value and provides a getter method to access its internal
/// value, even though you're discouraged to use it directly.
///
/// The value access might be needed though when, for
/// example, mapping the object structures into some kind
/// of storage, like a database. It can also be useful or testing
/// purposes.