NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1011 most downloaded on crates.io
Resource path matching and router
Last release 7 months ago
18 Feb 2026
Ships unpredictably
gaps range from 1 weeks to 1.8 years
Nearly every release is documented
notes for 19 of 19 stable releases
2 versions withdrawn
withdrawn after publishing
8 years old
28 releases · first in 2019
Minimum supported Rust version (MSRV) is now 1.88.
Add unicode crate feature (on-by-default) to switch between regex and regex-lite as a trade-off between full unicode support and binary size.
unicode crate feature (on-by-default) to switch between regex and regex-lite as a trade-off between full unicode support and binary size.One column per quarter.
Minimum supported Rust version (MSRV) is now 1.68 due to transitive time dependency.
time dependency.Correct typo in error string for i32 deserialization. [#2876]
i32 deserialization. #2876time dependency.Add ResourceDef::set_name. [#373][net#373]
Path::as_str. #2590ResourceDef::set_name. #373RouterBuilder::push. #2612IntoPatterns for bytestring::ByteString. #372ResourceDef::join. #380ResourceDef::pattern_iter to get an iterator over all patterns in a multi-pattern resource. #373Resource is now implemented for &mut Path<_> and RefMut<Path<_>>. #2568build_resource_path on multi-pattern resources. #2356ResourceDef::capture_match_info_fn to remove user_data parameter. #2612Path::path. #2590Quoter::requote now returns Option<Vec<u8>>. #2613IntoPatterns trait, adding a Patterns enum. #372Path::{len => segment_count} to be more descriptive of its purpose. #370ResourceDef::{is_prefix_match => find_match}. #373ResourceDef::{match_path => capture_match_info}. #373ResourceDef::{match_path_checked => capture_match_info_fn}. #373ResourceDef::{resource_path => resource_path_from_iter}. #371ResourceDef::{resource_path_named => resource_path_from_map}. #371Router::{*_checked => *_fn}. #373Option<U> with U in Router API. #2612Resource trait now uses an associated type, Path, instead of a generic parameter. #2568ResourceDef::pattern now returns the first pattern in multi-pattern resources. #2356ResourceDef::resource_path_from_iter now takes an IntoIterator. #373ResourceDef::name is now Option<&str>. #373ResourceDef::pattern is now Option<&str>. #373ResourceDef's PartialEq implementation. #373Path in unintended state after matching. #368PathDeserializer now decodes all percent encoded characters in dynamic segments. #2566Router::recognize* and ResourceDef::capture_match_info. #2612<details> <summary>0.5.0 Pre-Releases</summary>
Remove unused ResourceInfo. [#2612]
ResourceInfo. #2612RouterBuilder::push. #2612ResourceDef::capture_match_info_fn to remove user_data parameter. #2612Option<U> with U in Router API. #2612Router::recognize* and ResourceDef::capture_match_info. #2612Quoter::requote now returns Option<Vec<u8>>. #2613[#2590]: https://github.com/actix/actix-web/pull/2590
Resource trait now have an associated type, Path, instead of the generic parameter. [#2568]
PathDeserializer now decodes all percent encoded characters in dynamic segments. [#2566]
PathDeserializer now decodes all percent encoded characters in dynamic segments. #2566Minimum supported Rust version (MSRV) is now 1.52.
Introduce ResourceDef::join. [#380][net#380]
ResourceDef::join. #380ResourceDef::pattern now returns the first pattern in multi-pattern resources. #2356build_resource_path on multi-pattern resources. #2356Fix a bug in multi-patterns where static patterns are interpreted as regex. [#366][net#366]
ResourceDef::pattern_iter to get an iterator over all patterns in a multi-pattern resource. #373Path in unintended state after matching. #368ResourceDef PartialEq implementation. #373IntoPatterns trait, adding a Patterns enum. #372IntoPatterns for bytestring::ByteString. #372Path::{len => segment_count} to be more descriptive of it's purpose. #370ResourceDef::{resource_path => resource_path_from_iter}. #371ResourceDef::resource_path_from_iter now takes an IntoIterator. #373ResourceDef::{resource_path_named => resource_path_from_map}. #371ResourceDef::{is_prefix_match => find_match}. #373ResourceDef::{match_path => capture_match_info}. #373ResourceDef::{match_path_checked => capture_match_info_fn}. #373ResourceDef::name_mut and introduce ResourceDef::set_name. #373Router::{*_checked => *_fn}. #373ResourceDef::name is now Option<&str>. #373ResourceDef::pattern is now Option<&str>. #373</details>
When matching path parameters, %25 is now kept in the percent-encoded form; no longer decoded to %. [#357][net#357]
%25 is now kept in the percent-encoded form; no longer decoded to %. #357\n) in request URL. #360Path could return a malformed string after percent decoding. #359Path::{add, add_static} now take impl Into<Cow<'static, str>>. #345Version was yanked previously. See https://crates.io/crates/actix-router/0.3.0
Add Router::recognize_checked [#247][net#247]
Router::recognize_checked #247Use bytestring version range compatible with Bytes v1.0. [#246][net#246]
bytestring version range compatible with Bytes v1.0. #246- Fix from_hex() method
from_hex() methodSystemAdd ResourceDef::resource_path_named() path generation method
ResourceDef::resource_path_named() path generation methodAdd impl IntoPattern for &String
IntoPattern for &StringUse IntoPattern for RouterBuilder::path()
IntoPattern for RouterBuilder::path()- Add IntoPattern trait - Add multi-pattern resources
IntoPattern traitUse bytestring instead of string
- Remove debug prints
- Fix checked resource match
Added support for remainder match (i.e "/path/{tail}\*")
remainder match (i.e "/path/{tail}*")- Export Quoter type - Allow to reset Path instance
Quoter typePath instanceGet dynamic segment by name instead of iterator.
- Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →