toad-msg 0.14.1

Low-level CoAP message parsing & serialization
Documentation
# 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.14.1]https://github.com/toad-lib/toad/compare/toad-msg-v0.14.0...toad-msg-v0.14.1 (2023-02-20)


### Bug Fixes

* update common ([#225]https://github.com/toad-lib/toad/issues/225) ([3fcb013]https://github.com/toad-lib/toad/commit/3fcb013a903034221a804b3ef3901994bc01dbee)

## [0.14.0]https://github.com/toad-lib/toad/compare/toad-msg-v0.13.0...toad-msg-v0.14.0 (2023-02-18)


### Features

* **msg:** as_bytes for structs cont. slices + manual eq ord hash ([#221]https://github.com/toad-lib/toad/issues/221) ([fc8a527]https://github.com/toad-lib/toad/commit/fc8a5276baac709429b1262f6001822ee83f6415)

## [0.13.0]https://github.com/toad-lib/toad/compare/toad-msg-v0.12.3...toad-msg-v0.13.0 (2023-02-11)


### Features

* **toad-msg:** Message should support Observe option ([#219]https://github.com/toad-lib/toad/issues/219) ([4eff389]https://github.com/toad-lib/toad/commit/4eff389d81210ef8eebe9d65a821de2d02ce4fec)

## [0.12.3]https://github.com/toad-lib/toad/compare/toad-msg-v0.12.2...toad-msg-v0.12.3 (2023-02-05)


### Bug Fixes

* update common ([#213]https://github.com/toad-lib/toad/issues/213) ([b818856]https://github.com/toad-lib/toad/commit/b818856d63285be9cee79cced0d082411164e82f)

## [0.12.2]https://github.com/toad-lib/toad/compare/toad-msg-v0.12.1...toad-msg-v0.12.2 (2023-02-05)


### Bug Fixes

* update toad-common ([#209]https://github.com/toad-lib/toad/issues/209) ([f591e2d]https://github.com/toad-lib/toad/commit/f591e2d2c59febbd475a2924d989f146bd120801)

## [0.12.1]https://github.com/toad-lib/toad/compare/toad-msg-v0.12.0...toad-msg-v0.12.1 (2023-02-02)


### Bug Fixes

* publish toad-common upgrade, fix doc root ([#204]https://github.com/toad-lib/toad/issues/204) ([0215d1f]https://github.com/toad-lib/toad/commit/0215d1f1205e9fd8c54d151c54391488e0d2aaaf)

## [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)