## [](https://github.com/multiformats/rust-multihash/compare/v0.19.0...v0.19.1) (2023-09-06) ### Bug Fixes * make Serde (de)serialization no_std compatible ([#337](https://github.com/multiformats/rust-multihash/issues/337)) ([7ad5161](https://github.com/multiformats/rust-multihash/commit/7ad51614ad347bfa8c6f421986abc517e04091f6)), closes 336[#](https://github.com/multiformats/rust-multihash/issues/336). This was a regression introduced in v0.19.0. ## [](https://github.com/multiformats/rust-multihash/compare/v0.18.0...v0.19.0) (2023-06-06) ### ⚠ BREAKING CHANGES * the Serde serialization format changed * split crates into multiple to isolate breaking changes * `identity` hasher was removed See the migration section below for help on upgrading. ### Features * **codetable:** remove `identity` hasher ([#289](https://github.com/multiformats/rust-multihash/issues/289)) ([8473e2f](https://github.com/multiformats/rust-multihash/commit/8473e2f7ecdc0838a3f35d0ecb1935b4c70797c2)) * Serde serialize Multihash in bytes representation ([#302](https://github.com/multiformats/rust-multihash/issues/302)) ([1023226](https://github.com/multiformats/rust-multihash/commit/10232266c01aa83190af62ad6aeebf63bb7a16c7)) ### Bug Fixes * avoid possible panic in error handling code ([#277](https://github.com/multiformats/rust-multihash/issues/277)) ([5dc1dfa](https://github.com/multiformats/rust-multihash/commit/5dc1dfac0235e63e9ad80572e6b73f8fcd301ec3)) * don't panic on non minimal varints ([#291](https://github.com/multiformats/rust-multihash/issues/291)) ([6ef6040](https://github.com/multiformats/rust-multihash/commit/6ef604012b84d5c15d4f3c66a28ead96afedf158)), closes [#282](https://github.com/multiformats/rust-multihash/issues/282) * expose `MultihashDigest` trait in codetable ([#304](https://github.com/multiformats/rust-multihash/issues/304)) ([50b43cd](https://github.com/multiformats/rust-multihash/commit/50b43cdbba5492923ffb31bb197930d2f3e2cf14)) ### Code Refactoring * split crates into multiple to isolate breaking changes ([#272](https://github.com/multiformats/rust-multihash/issues/272)) ([954e523](https://github.com/multiformats/rust-multihash/commit/954e5233d273a2b7d682fd087178203628d131a4)) ### Migrating When upgrading to `v0.19`, consider the following: - `Code` has moved from `multihash::Code` to `multihash_codetable::Code`. It's strongly recommended to define your own code table using `multihash_derive`. Check the [custom codetable example](codetable/examples/custom_table.rs) on how to use it. For the simplest migration, use the `multihash_codetable::Code`. **Before** ```rust use multihash::{Code, MultihashDigest}; fn main() { let hash = Code::Sha2_256.digest(b"hello, world!"); println!("{:?}", hash); } ``` **After** ```rust use multihash_codetable::{Code, MultihashDigest}; fn main() { let hash = Code::Sha2_256.digest(b"hello, world!"); println!("{:?}", hash); } ``` If you get compile errors, make sure you have the correct features enabled. In this case it would be the `sha2` and `digest` features. - `multihash::Multihash` now requires the size of its internal buffer as a const-generic. You can migrate your existing code by defining the following type-alias: ```rust type Multihash = multihash::Multihash<64>; ``` - The `identity` hasher has been removed completely. **Before** ```rust use multihash::{Code, MultihashDigest}; fn main() { let hash = Code::Identity.digest(b"hello, world!"); println!("{:?}", hash); } ``` **After** ```rust use multihash::Multihash; const IDENTITY_HASH_CODE: u64 = 0x00; fn main() { let hash = Multihash::<64>::wrap(IDENTITY_HASH_CODE, b"hello, world!").unwrap(); println!("{:?}", hash); } ``` Check the [identity example](examples/identity.rs) for more information on how to replicate the functionality. ## [v0.18.1](https://github.com/multiformats/rust-multihash/compare/v0.18.0...v0.18.1) (2023-04-14) ### Bug Fixes * don't panic on non minimal varints ([#293](https://github.com/multiformats/rust-multihash/issues/293)) ([c3445fc](https://github.com/multiformats/rust-multihash/commit/c3445fc5041b0fc573945321ebd4b0cdffe0daa5)), closes [#282](https://github.com/multiformats/rust-multihash/issues/282) ## [0.18.0](https://github.com/multiformats/rust-multihash/compare/v0.17.0...v0.18.0) (2022-12-06) ### ⚠ BREAKING CHANGES * update to Rust edition 2021 * `Multihash::write()` returns bytes written Prior to this change it returned an empty tuple `()`, now it returns the bytes written. ### Features * add `encoded_len` and bytes written ([#252](https://github.com/multiformats/rust-multihash/issues/252)) ([b3cc43e](https://github.com/multiformats/rust-multihash/commit/b3cc43ecb6f9c59da774b094853d6542430d55ad)) ### Bug Fixes * remove Nix support ([#254](https://github.com/multiformats/rust-multihash/issues/254)) ([ebf57dd](https://github.com/multiformats/rust-multihash/commit/ebf57ddb82be2d2fd0a2f00666b0f888d4c78e1b)), closes [#247](https://github.com/multiformats/rust-multihash/issues/247) * update to Rust edition 2021 ([#255](https://github.com/multiformats/rust-multihash/issues/255)) ([da53376](https://github.com/multiformats/rust-multihash/commit/da53376e0d9cf2d82d6c0d10590a77991cb3a6b6))