# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- (Nothing yet)
### Changed
- (Nothing yet)
### Fixed
- (Nothing yet)
### Removed
- (Nothing yet)
## [0.1.2] - 2025-07-07
### Added
- Implemented the traits New and TryNew for the fundamental types
### Changed
- N/A
### Fixed
- N/A
### Removed
- N/A
## [0.1.1] - 2025-06-03
### Added
- **Advanced Construction Patterns:**
- `ValidationPolicy`: Trait to define reusable validation strategies.
- `Value` associated type for the type to be validated.
- `Error` associated type for validation failure.
- Supports `std::error::Error` with `std` feature.
- Supports `core::fmt::Debug` without `std` feature.
- `validate_ref(&Self::Value)` method for by-reference validation (must be implemented).
- `validate(Self::Value)` method for by-value validation (default implementation calls `validate_ref`).
- `TryNewValidated`: Trait for two-phase construction combining a `ValidationPolicy` with `TryNew`.
- `Policy` associated type to specify the `ValidationPolicy`.
- `try_new_validated` default method to apply policy then `TryNew`.
### Changed
- N/A
### Fixed
- N/A
### Removed
- N/A
## [0.1.0] - 2025-05-29
### Added
- **Initial Release**
- **Core Traits:**
- `IntoInner`: Re-exported from the `into_inner` crate. Defines the input type for construction.
- `TryNew`: For fallible object creation, returning a `Result`.
- Supports `std::error::Error` for `Error` type with `std` feature.
- Supports `core::fmt::Debug` for `Error` type without `std` feature.
- `New`: For infallible object creation, expected to panic on invalid input.
- **Advanced Construction Patterns:**
- `ConditionallyCreate`: Trait for conditional creation logic based on build profile (debug vs. release).
- Uses `TryNew::try_new().expect()` in debug.
- Uses `New::new()` in release.
- **`no_std` Support:**
- Library is `no_std` compatible.
- `std` feature enabled by default, controlling error trait bounds for `TryNew::Error`.
- Comprehensive documentation and examples for all traits.
- Unit tests covering various scenarios, including success, failure, panics, and `no_std` compatibility for error types.
### Changed
- N/A (Initial Release)
### Fixed
- N/A (Initial Release)
### Removed
- N/A (Initial Release)