# Changes ## Unreleased - Minimum supported Rust version (MSRV) is now 1.68 due to transitive `time` dependency. ## 0.5.1 - Correct typo in error string for `i32` deserialization. [#2876] - Minimum supported Rust version (MSRV) is now 1.59 due to transitive `time` dependency. [#2876]: https://github.com/actix/actix-web/pull/2876 ## 0.5.0 ### Added - Add `Path::as_str`. [#2590] - Add `ResourceDef::set_name`. [#373][net#373] - Add `RouterBuilder::push`. [#2612] - Implement `IntoPatterns` for `bytestring::ByteString`. [#372][net#372] - Introduce `ResourceDef::join`. [#380][net#380] - Introduce `ResourceDef::pattern_iter` to get an iterator over all patterns in a multi-pattern resource. [#373][net#373] - `Resource` is now implemented for `&mut Path<_>` and `RefMut>`. [#2568] - Support `build_resource_path` on multi-pattern resources. [#2356] - Support multi-pattern prefixes and joins. [#2356] ### Changed - Change signature of `ResourceDef::capture_match_info_fn` to remove `user_data` parameter. [#2612] - Deprecate `Path::path`. [#2590] - Disallow prefix routes with tail segments. [#379][net#379] - Enforce path separators on dynamic prefixes. [#378][net#378] - Minimum supported Rust version (MSRV) is now 1.54. - Prefix segments now always end with with a segment delimiter or end-of-input. [#2355] - Prefix segments with trailing slashes define a trailing empty segment. [#2355] - `Quoter::requote` now returns `Option>`. [#2613] - Re-work `IntoPatterns` trait, adding a `Patterns` enum. [#372][net#372] - Rename `Path::{len => segment_count}` to be more descriptive of its purpose. [#370][net#370] - Rename `ResourceDef::{is_prefix_match => find_match}`. [#373][net#373] - Rename `ResourceDef::{match_path => capture_match_info}`. [#373][net#373] - Rename `ResourceDef::{match_path_checked => capture_match_info_fn}`. [#373][net#373] - Rename `ResourceDef::{resource_path => resource_path_from_iter}`. [#371][net#371] - Rename `ResourceDef::{resource_path_named => resource_path_from_map}`. [#371][net#371] - Rename `Router::{*_checked => *_fn}`. [#373][net#373] - Replace `Option` with `U` in `Router` API. [#2612] - `Resource` trait now uses an associated type, `Path`, instead of a generic parameter. [#2568] - `ResourceDef::pattern` now returns the first pattern in multi-pattern resources. [#2356] - `ResourceDef::resource_path_from_iter` now takes an `IntoIterator`. [#373][net#373] - Return type of `ResourceDef::name` is now `Option<&str>`. [#373][net#373] - Return type of `ResourceDef::pattern` is now `Option<&str>`. [#373][net#373] ### Fixed - Fix `ResourceDef`'s `PartialEq` implementation. [#373][net#373] - Fix segment interpolation leaving `Path` in unintended state after matching. [#368][net#368] - Improve malformed path error message. [#384][net#384] - `PathDeserializer` now decodes all percent encoded characters in dynamic segments. [#2566] - Relax bounds on `Router::recognize*` and `ResourceDef::capture_match_info`. [#2612] - Static patterns in multi-patterns are no longer interpreted as regex. [#366][net#366] ### Removed - `ResourceDef::name_mut`. [#373][net#373] - Unused `ResourceInfo`. [#2612] [#2355]: https://github.com/actix/actix-web/pull/2355 [#2356]: https://github.com/actix/actix-web/pull/2356 [#2566]: https://github.com/actix/actix-net/pull/2566 [#2568]: https://github.com/actix/actix-web/pull/2568 [#2590]: https://github.com/actix/actix-web/pull/2590 [#2612]: https://github.com/actix/actix-web/pull/2612 [#2613]: https://github.com/actix/actix-web/pull/2613 [net#366]: https://github.com/actix/actix-net/pull/366 [net#368]: https://github.com/actix/actix-net/pull/368 [net#368]: https://github.com/actix/actix-net/pull/368 [net#370]: https://github.com/actix/actix-net/pull/370 [net#371]: https://github.com/actix/actix-net/pull/371 [net#372]: https://github.com/actix/actix-net/pull/372 [net#373]: https://github.com/actix/actix-net/pull/373 [net#378]: https://github.com/actix/actix-net/pull/378 [net#379]: https://github.com/actix/actix-net/pull/379 [net#380]: https://github.com/actix/actix-net/pull/380 [net#384]: https://github.com/actix/actix-net/pull/384
0.5.0 Pre-Releases ## 0.5.0-rc.3 - Remove unused `ResourceInfo`. [#2612] - Add `RouterBuilder::push`. [#2612] - Change signature of `ResourceDef::capture_match_info_fn` to remove `user_data` parameter. [#2612] - Replace `Option` with `U` in `Router` API. [#2612] - Relax bounds on `Router::recognize*` and `ResourceDef::capture_match_info`. [#2612] - `Quoter::requote` now returns `Option>`. [#2613] [#2612]: https://github.com/actix/actix-web/pull/2612 [#2613]: https://github.com/actix/actix-web/pull/2613 ## 0.5.0-rc.2 - Add `Path::as_str`. [#2590] - Deprecate `Path::path`. [#2590] [#2590]: https://github.com/actix/actix-web/pull/2590 ## 0.5.0-rc.1 - `Resource` trait now have an associated type, `Path`, instead of the generic parameter. [#2568] - `Resource` is now implemented for `&mut Path<_>` and `RefMut>`. [#2568] [#2568]: https://github.com/actix/actix-web/pull/2568 ## 0.5.0-beta.4 - `PathDeserializer` now decodes all percent encoded characters in dynamic segments. [#2566] - Minimum supported Rust version (MSRV) is now 1.54. [#2566]: https://github.com/actix/actix-net/pull/2566 ## 0.5.0-beta.3 - Minimum supported Rust version (MSRV) is now 1.52. ## 0.5.0-beta.2 - Introduce `ResourceDef::join`. [#380][net#380] - Disallow prefix routes with tail segments. [#379][net#379] - Enforce path separators on dynamic prefixes. [#378][net#378] - Improve malformed path error message. [#384][net#384] - Prefix segments now always end with with a segment delimiter or end-of-input. [#2355] - Prefix segments with trailing slashes define a trailing empty segment. [#2355] - Support multi-pattern prefixes and joins. [#2356] - `ResourceDef::pattern` now returns the first pattern in multi-pattern resources. [#2356] - Support `build_resource_path` on multi-pattern resources. [#2356] - Minimum supported Rust version (MSRV) is now 1.51. [net#378]: https://github.com/actix/actix-net/pull/378 [net#379]: https://github.com/actix/actix-net/pull/379 [net#380]: https://github.com/actix/actix-net/pull/380 [net#384]: https://github.com/actix/actix-net/pull/384 [#2355]: https://github.com/actix/actix-web/pull/2355 [#2356]: https://github.com/actix/actix-web/pull/2356 ## 0.5.0-beta.1 - Fix a bug in multi-patterns where static patterns are interpreted as regex. [#366][net#366] - Introduce `ResourceDef::pattern_iter` to get an iterator over all patterns in a multi-pattern resource. [#373][net#373] - Fix segment interpolation leaving `Path` in unintended state after matching. [#368][net#368] - Fix `ResourceDef` `PartialEq` implementation. [#373][net#373] - Re-work `IntoPatterns` trait, adding a `Patterns` enum. [#372][net#372] - Implement `IntoPatterns` for `bytestring::ByteString`. [#372][net#372] - Rename `Path::{len => segment_count}` to be more descriptive of it's purpose. [#370][net#370] - Rename `ResourceDef::{resource_path => resource_path_from_iter}`. [#371][net#371] - `ResourceDef::resource_path_from_iter` now takes an `IntoIterator`. [#373][net#373] - Rename `ResourceDef::{resource_path_named => resource_path_from_map}`. [#371][net#371] - Rename `ResourceDef::{is_prefix_match => find_match}`. [#373][net#373] - Rename `ResourceDef::{match_path => capture_match_info}`. [#373][net#373] - Rename `ResourceDef::{match_path_checked => capture_match_info_fn}`. [#373][net#373] - Remove `ResourceDef::name_mut` and introduce `ResourceDef::set_name`. [#373][net#373] - Rename `Router::{*_checked => *_fn}`. [#373][net#373] - Return type of `ResourceDef::name` is now `Option<&str>`. [#373][net#373] - Return type of `ResourceDef::pattern` is now `Option<&str>`. [#373][net#373] [net#368]: https://github.com/actix/actix-net/pull/368 [net#366]: https://github.com/actix/actix-net/pull/366 [net#368]: https://github.com/actix/actix-net/pull/368 [net#370]: https://github.com/actix/actix-net/pull/370 [net#371]: https://github.com/actix/actix-net/pull/371 [net#372]: https://github.com/actix/actix-net/pull/372 [net#373]: https://github.com/actix/actix-net/pull/373
## 0.4.0 - When matching path parameters, `%25` is now kept in the percent-encoded form; no longer decoded to `%`. [#357][net#357] - Path tail patterns now match new lines (`\n`) in request URL. [#360][net#360] - Fixed a safety bug where `Path` could return a malformed string after percent decoding. [#359][net#359] - Methods `Path::{add, add_static}` now take `impl Into>`. [#345][net#345] [net#345]: https://github.com/actix/actix-net/pull/345 [net#357]: https://github.com/actix/actix-net/pull/357 [net#359]: https://github.com/actix/actix-net/pull/359 [net#360]: https://github.com/actix/actix-net/pull/360 ## 0.3.0 - Version was yanked previously. See https://crates.io/crates/actix-router/0.3.0 ## 0.2.7 - Add `Router::recognize_checked` [#247][net#247] [net#247]: https://github.com/actix/actix-net/pull/247 ## 0.2.6 - Use `bytestring` version range compatible with Bytes v1.0. [#246][net#246] [net#246]: https://github.com/actix/actix-net/pull/246 ## 0.2.5 - Fix `from_hex()` method ## 0.2.4 - Add `ResourceDef::resource_path_named()` path generation method ## 0.2.3 - Add impl `IntoPattern` for `&String` ## 0.2.2 - Use `IntoPattern` for `RouterBuilder::path()` ## 0.2.1 - Add `IntoPattern` trait - Add multi-pattern resources ## 0.2.0 - Update http to 0.2 - Update regex to 1.3 - Use bytestring instead of string ## 0.1.5 - Remove debug prints ## 0.1.4 - Fix checked resource match ## 0.1.3 - Added support for `remainder match` (i.e "/path/{tail}\*") ## 0.1.2 - Export `Quoter` type - Allow to reset `Path` instance ## 0.1.1 - Get dynamic segment by name instead of iterator. ## 0.1.0 - Initial release