# 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).
## 0.11.0 - 2024-02-09
### Added
- `Packable::unpack_inner`, `Packable::unpack_verified`, and `Packable::unpack_unverified`;
### Changed
- Removed `Default` bound from `Packable::UnpackVisitor`;
- Replaced `const VERIFY` in `Packable::unpack` with `Option<&Self::UnpackVisitor>`, which can be checked instead;
- Renamed `PackableExt::unpack_verified` and `unpack_unverified` to `unpack_bytes_verified` and `unpack_bytes_unverified`;
## 0.10.1 - 2024-01-08
### Added
- `Packable` impl for `HashMap` and `BTreeMap`;
- `HashMapPrefix` and `BTreeMapPrefix` types;
## 0.10.0 - 2023-11-17
### Changed
- Only pass visitor to `verify_with` if it was provided;
## 0.9.0 - 2023-11-14
### Added
- Struct-level `verify_with` attribute;
## 0.8.3 - 2023-09-18
### Added
- `UnpackOrderedSetError`;
### Fixed
- `BTreeSet` impls and `BTreeSetPrefix` unpack now fails if the data is unordered;
## 0.8.2 - 2023-09-07
### Added
- `BTreeSet` impls and `BTreeSetPrefix`;
## 0.8.1 - 2023-05-02
### Fixed
- `no_std` support;
## 0.8.0 - 2023-03-30
### Changed
- `Debug` impl of `StringPrefix`, `BoxedSlicePrefix` and `VecPrefix` don't print the wrapper anymore;
## 0.7.0 - 2022-10-10
### Changed
- Updated dependencies;
## 0.6.2 - 2022-08-26
### Fixed
- `verify_with` visitor parameter type from `field::UnpackVisitor` to `Self::UnpackVisitor`;
## 0.6.1 - 2022-08-26
### Added
- `verify_with` attribute functions now also take the `visitor` as parameter;
## 0.6.0 - 2022-08-25
### Added
- `Packable::UnpackVisitor` associated type;
- `Packable::{unpack, unpack_verified}` argument `visitor`;
- `#[packable(unpack_visitor = _)]` attribute;
### Changed
- Updated dependencies;
## 0.5.0 - 2022-07-14
### Added
- Add the `SliceUnpacker` type;
### Removed
- Remove the `Unpacker` implementation for `&[u8]`.
## 0.4.0 - 2022-06-13
### Added
- Add the `StringPrefix` type;
## 0.3.3 - 2022-05-27
### Added
- Propagate alternate `Debug` to `VecPrefix` and `BoxedSlicePrefix`;
## 0.3.2 - 2022-05-04
### Added
- Custom `Debug` impl for `VecPrefix`;
- Custom `Debug` impl for `BoxedSlicePrefix`;
## 0.3.1 - 2022-04-20
### Added
- Add `Packer::written_bytes` and `Unpacker::read_bytes`;
## 0.3.0 - 2022-04-19
### Added
- Implement `Packable` for tuples;
- Add `CounterPacker` and `CounterUnpacker`;
- Implement `Packer` and `Unpacker` for mutable references;
### Changed
- Inline more functions in a less aggressive way;
- Make byte buffers packing and unpacking more performant;
- Require `From<Infallible>` for every `Packable::UnpackError`;
### Removed
- Remove `UnpackErrorExt::infallible` as it superseeded by `UnpackErrorExt::coerce`;
## 0.2.1 - 2022-02-11
### Added
- Make the `Error` implementation for `UnknownTagError` less restricted;
- Implement `Error` for `UnpackError`;
- Document the `serde` and `primitive-types` features;
### Changed
- Make `String` packing more performant by using `Packer::pack_bytes` directly;
- Fix documentation of `UnexpectedEOF` and `UnpackPrefixError`;
## 0.2.0 - 2022-02-09
### Added
- Derive `Error` for all the error types if the `std` feature is enabled;
- Implement `Packable` for `f32` and `f64`;
- Implement `Packable` for `usize`, `isize`, `Vec<T>`, `Box<[T]>` and `String` under the `usize` feature;
- Implement `Into<Infallible>` for `UnpackError<Infallible, Infallible>` and `UnpackPrefixError<Infallible, Infallible>`;
- Add the `UnpackError::into_packable_err` and `UnpackPrefixError::into_item_err` methods;
### Changed
- Rename `UnpackError::into_unpacker` to `UnpackError::into_unpacker_err`;
- Rename `UnpackPrefixError::Packable` to `UnpackPrefixError::Item`;
- Rename `UnpackPrefixError::into_prefix` to `UnpackPrefixError::into_prefix_err`;
- Rename `UnpackPrefixError::unwrap_packable_or_else` to `UnpackPrefixError::unwrap_item_err_or_else`;
## 0.1.0 - 2022-01-13
### Added
- Initial features;