# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [0.12.0](https://github.com/toad-lib/toad/compare/toad-msg-v0.11.0...toad-msg-v0.12.0) (2023-01-31)
### Features
* add trait for getting & setting options ([bd7e8a7](https://github.com/toad-lib/toad/commit/bd7e8a7446c77c6c1a01b2e563c4de7af0f17c8b))
### Performance Improvements
* benches ([9df2c1e](https://github.com/toad-lib/toad/commit/9df2c1e474c606fcd28e66fc2751a97e2c72861e))
## [0.11.0](https://github.com/toad-lib/toad/compare/toad-msg-v0.10.0...toad-msg-v0.11.0) (2023-01-29)
### Features
* **msg:** add known option methods with nice types ([272c5dc](https://github.com/toad-lib/toad/commit/272c5dca5a518d9ac98c8d7242177da2868efbf1))
## [0.10.0](https://github.com/toad-lib/toad/compare/toad-msg-v0.9.0...toad-msg-v0.10.0) (2023-01-29)
### Features
* add list of well-known option numbers ([25d37a0](https://github.com/toad-lib/toad/commit/25d37a0af923e1825dd0a97d44896b603637f23a))
### Bug Fixes
* docs, warnings ([5a84560](https://github.com/toad-lib/toad/commit/5a8456007892fbed61116851268c2c7e9352706b))
* fmt ([8418930](https://github.com/toad-lib/toad/commit/8418930a2b1ca054773c46c189809f4deade1b86))
## [0.9.0](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.13...toad-msg-v0.9.0) (2023-01-27)
### ⚠ BREAKING CHANGES
* **toad-msg:** option map should support repeated options
* options should be stored with number
* **toad-msg:** parsing messages should use slices instead of iterators ([#142](https://github.com/toad-lib/toad/issues/142))
* rename kwap_msg -> toad_msg ([#136](https://github.com/toad-lib/toad/issues/136))
### Features
* **kwap:** add support for coap runtime config ([c082f06](https://github.com/toad-lib/toad/commit/c082f0696a288d2a2db9b986c3e3eaf2e7a4e8f4))
* **msg:** impl hash for structs ([#155](https://github.com/toad-lib/toad/issues/155)) ([d64d6d2](https://github.com/toad-lib/toad/commit/d64d6d2cb69cc9da9855411457e24c5bd335019d))
* options should be stored with number ([f9ed97e](https://github.com/toad-lib/toad/commit/f9ed97e58ad1db63516c3cdf1c76a8d563eeee01))
* rename kwap_msg -> toad_msg ([#136](https://github.com/toad-lib/toad/issues/136)) ([1035350](https://github.com/toad-lib/toad/commit/1035350f453c1c0d5433a13b287f5fc9d5c556e9))
* **toad-msg:** option map should support repeated options ([dad3ee1](https://github.com/toad-lib/toad/commit/dad3ee1697f74d78d3c48e6b972311feaeca8be7))
* **toad-msg:** parsing messages should use slices instead of iterators ([#142](https://github.com/toad-lib/toad/issues/142)) ([03b3a5b](https://github.com/toad-lib/toad/commit/03b3a5b0155dd8104ced35825be3cebd051d81c9))
### Bug Fixes
* bellybutton lint ([1037f28](https://github.com/toad-lib/toad/commit/1037f287f04fe652c4514282b1940d4219f9c039))
* code kind should be correct ([5fbbb1f](https://github.com/toad-lib/toad/commit/5fbbb1f4728b8c0b26cb64be062a9704a4822c88))
* impl ord ([#156](https://github.com/toad-lib/toad/issues/156)) ([3cb36fc](https://github.com/toad-lib/toad/commit/3cb36fc1dc4303153ce7b4eba9e81261240d50ac))
* **toad-msg:** Message.set should preserve previous values ([dc7fb06](https://github.com/toad-lib/toad/commit/dc7fb06b8b49fc996fe9d56a3a1cacef0fa2293e))
* **toad-msg:** update toad-common 0.10 -> 0.11 ([#145](https://github.com/toad-lib/toad/issues/145)) ([62a05ce](https://github.com/toad-lib/toad/commit/62a05ce433d253d2a98722807cd031b9fba8176d))
## [0.8.13](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.12...toad-msg-v0.8.13) (2023-01-25)
### Bug Fixes
* release-please ([206e77a](https://github.com/toad-lib/toad/commit/206e77a3fa48739ae64788af4695dc69833b4d2c))
## [0.8.12](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.11...toad-msg-v0.8.12) (2023-01-25)
### Bug Fixes
* release-please ([c61b9c5](https://github.com/toad-lib/toad/commit/c61b9c550046548892981889a43084701c3fc1e0))
## [0.8.11](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.10...toad-msg-v0.8.11) (2023-01-25)
### Bug Fixes
* release-please ([104b5ff](https://github.com/toad-lib/toad/commit/104b5ff6c2365b38ed436717f37effeb8d88b50f))
## [0.8.10](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.9...toad-msg-v0.8.10) (2023-01-25)
### Bug Fixes
* release-please ([6247519](https://github.com/toad-lib/toad/commit/62475196211d694bd79f33bdf394397d6f4021dd))
## [0.8.9](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.8...toad-msg-v0.8.9) (2023-01-25)
### Bug Fixes
* release-please ([7c43cbc](https://github.com/toad-lib/toad/commit/7c43cbcf8f92b288de37244119bd51fe32fc1db7))
* release-please ([c8eb82f](https://github.com/toad-lib/toad/commit/c8eb82ff9458076323eda15373aabfea93182aa7))
## [0.8.8](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.7...toad-msg-v0.8.8) (2023-01-24)
### Bug Fixes
* release-please ([45c5386](https://github.com/toad-lib/toad/commit/45c5386a5f6a2acbca3c9b8838270a5311ff723f))
* release-please ([3e9396d](https://github.com/toad-lib/toad/commit/3e9396d6d5c369a626a2173c3b951ed40a17a892))
## [0.8.7](https://github.com/toad-lib/toad/compare/toad-msg-v0.8.6...toad-msg-v0.8.7) (2023-01-24)
### Bug Fixes
* add existing release-please tags ([0d4bf22](https://github.com/toad-lib/toad/commit/0d4bf22b37ff0e2e1e5a27b79355fe2cfec80793))
* testing release-please ([4820c92](https://github.com/toad-lib/toad/commit/4820c92680b48fda5a2382a00ce70abd0d49b3da))
### 0.8.6 (2023-01-24)
### 0.8.5 (2023-01-22)
### 0.8.4 (2023-01-18)
### 0.8.3 (2022-10-27)
### Bug Fixes
* impl ord ([#156](https://github.com/clov-coffee/toad/issues/156)) ([3cb36fc](https://github.com/clov-coffee/toad/commit/3cb36fc1dc4303153ce7b4eba9e81261240d50ac))
### 0.8.2 (2022-10-27)
### Features
* **msg:** impl hash for structs ([#155](https://github.com/clov-coffee/toad/issues/155)) ([d64d6d2](https://github.com/clov-coffee/toad/commit/d64d6d2cb69cc9da9855411457e24c5bd335019d))
### 0.8.1 (2022-10-20)
### Bug Fixes
* **toad-msg:** update toad-common 0.10 -> 0.11 ([#145](https://github.com/clov-coffee/toad/issues/145)) ([62a05ce](https://github.com/clov-coffee/toad/commit/62a05ce433d253d2a98722807cd031b9fba8176d))
## 0.8.0 (2022-10-20)
### ⚠ BREAKING CHANGES
* removed `TryConsumeNBytes`
* removed a type parameter from `Message`
* from `Message<PayloadBytes, OptionBytes, Options>`
* to `Message<PayloadBytes, Options>`
* added trait bounds for `Message<PayloadBytes, Options>` impls (non-breaking if you're using `Vec` or `tinyvec::ArrayVec`)
* `PayloadBytes: AppendCopy<u8>`
* `Options: AppendCopy<u8>`
* added trait bound `A: AsRef<[u8]>` for `TryFromBytes<A>`
* changed `TryFromBytes::<A>::try_from_bytes`
* from `fn<I: Iterator<...>>(bs: I) -> Result<...>`
* to `fn(bs: A) -> Result<...>`
* changed trait bound on `A` in `TryConsumeBytes<A>`
* from `A: Iterator<...>`
* to `A: AsRef<[u8]>`
* changed `TryConsumeBytes::<A>::try_consume_bytes`
* from `fn try_consume_bytes(bytes: &mut I) -> Result<Self, Self::Error>`
* to `fn try_consume_bytes(bytes: &mut Cursor<A>) -> Result<Self, Self::Error>;`
* refactored module structure (most likely non-breaking since they were all `pub` but `#[doc(hidden)]`)
### Features
none
### Bug Fixes
* removed trait bounds on all struct type parameters, but kept the trait bounds on the impls
* _the data structure doesn't care what it stores, but the **behavior** definitely does_
### Performance Improvements
* rewrote message parsing to use the new cursor type in toad-common
* navigating buffers is now constant time from linear time
* filling toad-msg data structures by `Extend`ing from the source byte buffer should be many many times faster now
* this is owed to `Vec` and `tinyvec::ArrayVec` using more specialized "copy to end from slice" implementations that use `ptr::non_overlapping_copy` (See `toad_common::AppendCopy`) instead of copying one at a time
## 0.7.0 (2022-10-08)
### ⚠ BREAKING CHANGES
* rename kwap_msg -> toad_msg (#136)
### Features
* rename kwap_msg -> toad_msg ([#136](https://github.com/clov-coffee/toad/issues/136)) ([1035350](https://github.com/clov-coffee/toad/commit/1035350f453c1c0d5433a13b287f5fc9d5c556e9))
### 0.6.1 (2022-06-18)
### Features
* **msg:** add critical, nocachekey, unsafe flags to optnumber ([#132](https://github.com/clov-coffee/toad/issues/132)) ([3db6794](https://github.com/clov-coffee/toad/commit/3db6794af1ea9ceb514a7c9692331c86d25b436d))
## 0.6.0 (2022-05-25)
### ⚠ BREAKING CHANGES
* **toad:** support ipv4 and ipv6 (#126)
### Features
* **toad:** support ipv4 and ipv6 ([#126](https://github.com/clov-coffee/toad/issues/126)) ([9150ca1](https://github.com/clov-coffee/toad/commit/9150ca13950db5c8f17f0963f3ae111f8362ba79))
### 0.5.1 (2022-05-20)
### Features
* **toad-msg:** add Token::opaque, Message::ack, Code.kind ([#118](https://github.com/clov-coffee/toad/issues/118)) ([3119233](https://github.com/clov-coffee/toad/commit/31192330fa712d26147b61ef184f17ba3c534554))
## 0.5.0 (2022-05-20)
### ⚠ BREAKING CHANGES
* **toad:** Choose CON / NON responses to NON requests (#117)
### Features
* **toad:** Choose CON / NON responses to NON requests ([#117](https://github.com/clov-coffee/toad/issues/117)) ([5d39603](https://github.com/clov-coffee/toad/commit/5d3960314ffef7cac4f896d92c056d6e9100f10e))
### 0.4.7 (2022-05-10)
### 0.4.6 (2022-04-27)
### Features
* **msg:** update common ([#71](https://github.com/clov-coffee/toad/issues/71)) ([6cf4927](https://github.com/clov-coffee/toad/commit/6cf49272c096eb15694325596e368946249cd992))
### 0.4.5 (2022-01-29)
### 0.4.4 (2022-01-15)
### Bug Fixes
* **msg:** Code should impl Eq + Ord ([#57](https://github.com/clov-coffee/toad/issues/57)) ([96bdd8d](https://github.com/clov-coffee/toad/commit/96bdd8da8ab71c6c6a828c95d6d38ff90a3d1dd4))
### 0.4.3 (2022-01-11)
### 0.4.2 (2022-01-08)
### Bug Fixes
* **msg:** OptNumber should impl Default ([#47](https://github.com/clov-coffee/toad/issues/47)) ([e3b8687](https://github.com/clov-coffee/toad/commit/e3b8687b1b30de909a0c8b6203c355c1ee1c7aaa))
### 0.4.1 (2022-01-07)
### Bug Fixes
* **msg:** all where clauses should be gone ([#44](https://github.com/clov-coffee/toad/issues/44)) ([f067a87](https://github.com/clov-coffee/toad/commit/f067a87b705b0800b1729893dc34942aebb27917))
## 0.4.0 (2022-01-04)
### ⚠ BREAKING CHANGES
* **msg:** toad_msg should use latest version of toad_common (#42)
### Features
* **msg:** toad_msg should use latest version of toad_common ([#42](https://github.com/clov-coffee/toad/issues/42)) ([2f035ba](https://github.com/clov-coffee/toad/commit/2f035ba1373126968e7c31c0a4ea327fc9113e50))
## 0.3.0 (2022-01-01)
### ⚠ BREAKING CHANGES
* **msg:** make message type an enum (#38)
### Features
* **msg:** make message type an enum ([#38](https://github.com/clov-coffee/toad/issues/38)) ([91c77b6](https://github.com/clov-coffee/toad/commit/91c77b659a8066ca6c34dbe9e5b3df7abfe2d028))
### 0.2.7 (2022-01-01)
### Bug Fixes
* **msg:** update toad_common ([#37](https://github.com/clov-coffee/toad/issues/37)) ([73baf95](https://github.com/clov-coffee/toad/commit/73baf95ae05faded1751aa4e7e849c62df0ade6b))
### 0.2.6 (2021-12-31)
### 0.2.5 (2021-12-30)
### Bug Fixes
* **msg:** make Code::new a const fn ([#29](https://github.com/clov-coffee/toad/issues/29)) ([e0f22cf](https://github.com/clov-coffee/toad/commit/e0f22cf0663b9ba7a4617f3fa4efbaf82856d155))
### 0.2.4 (2021-12-30)
### Features
* **msg:** add Code::new ([#28](https://github.com/clov-coffee/toad/issues/28)) ([47c1ce7](https://github.com/clov-coffee/toad/commit/47c1ce7c0867052aec9ddba041335a2b763202c4))
### 0.2.3 (2021-12-30)
### 0.2.2 (2021-12-30)
### 0.2.1 (2021-12-30)
## 0.2.0 (2021-12-29)
### ⚠ BREAKING CHANGES
* combine no_alloc and alloc into one Message generic over collection (#17)
### Features
* combine no_alloc and alloc into one Message generic over collection ([#17](https://github.com/clov-coffee/toad/issues/17)) ([10939a2](https://github.com/clov-coffee/toad/commit/10939a230751183e49b60adb45d0bfa84d28a202))
### 0.1.6 (2021-12-27)
### 0.1.5 (2021-12-27)
### Bug Fixes
* bump amend ([c6e34cb](https://github.com/clov-coffee/toad/commit/c6e34cbe57c52bf6c888ef856a4c9ff43d4ccd23))
### 0.1.4 (2021-12-26)
### Bug Fixes
* update token to store token bytes verbatim ([#8](https://github.com/clov-coffee/toad/issues/8)) ([9dc6724](https://github.com/clov-coffee/toad/commit/9dc6724d9bbc1ef6f7c81156f879ffec88cba20f))
### 0.1.3 (2021-12-26)
### 0.1.2 (2021-12-26)
### 0.1.1 (2021-12-26)