mirror of
https://github.com/tokio-rs/axum.git
synced 2026-09-08 00:00:24 +02:00
Fix compile time regression by boxing routes internally (#404)
This is a reimplementation of #401 but with the new matchit based router. Fixes #399
This commit is contained in:
+25
-8
@@ -7,20 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
# Unreleased
|
||||
|
||||
- **fixed:** All known compile time issues are resolved, including those with
|
||||
`boxed` and those introduced by Rust 1.56 ([#404])
|
||||
- Big internal refactoring of routing leading to several improvements ([#363])
|
||||
- Wildcard routes like `.route("/api/users/*rest", service)` are now supported.
|
||||
- The order routes are added in no longer matters.
|
||||
- Adding a conflicting route will now cause a panic instead of silently making
|
||||
- **added:** Wildcard routes like `.route("/api/users/*rest", service)` are now supported.
|
||||
- **fixed:** The order routes are added in no longer matters.
|
||||
- **fixed:** Adding a conflicting route will now cause a panic instead of silently making
|
||||
a route unreachable.
|
||||
- Route matching is faster as number of routes increase.
|
||||
- **fixed:** Route matching is faster as number of routes increase.
|
||||
- **breaking:** The routes `/foo` and `/:key` are considered to overlap and
|
||||
will cause a panic when constructing the router. This might be fixed in the future.
|
||||
- Improve performance of `BoxRoute` ([#339])
|
||||
- Expand accepted content types for JSON requests ([#378])
|
||||
- **fixed:** Expand accepted content types for JSON requests ([#378])
|
||||
- **breaking:** The router's type is now always `Router` regardless of how many routes or
|
||||
middleware are applies ([#404])
|
||||
|
||||
This means router types are all always nameable:
|
||||
|
||||
```rust
|
||||
fn my_routes() -> Router {
|
||||
Router::new().route(
|
||||
"/users",
|
||||
post(|| async { "Hello, World!" }),
|
||||
)
|
||||
}
|
||||
```
|
||||
- **breaking:** `Route::boxed` and `BoxRoute` have been removed as they're no longer
|
||||
necessary ([#404])
|
||||
- **breaking:** `Route`, `Nested`, `Or` types are now private. They no longer had to be
|
||||
public because `Router` is internally boxed ([#404])
|
||||
- **breaking:** Automatically do percent decoding in `extract::Path`
|
||||
([#272])
|
||||
- **breaking:** `Router::boxed` now the inner service to implement `Clone` and
|
||||
`Sync` in addition to the previous trait bounds ([#339])
|
||||
- **breaking:** Added feature flags for HTTP1 and JSON. This enables removing a
|
||||
few dependencies if your app only uses HTTP2 or doesn't use JSON. Its only a
|
||||
breaking change if you depend on axum with `default_features = false`. ([#286])
|
||||
@@ -103,6 +119,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
[#363]: https://github.com/tokio-rs/axum/pull/363
|
||||
[#396]: https://github.com/tokio-rs/axum/pull/396
|
||||
[#402]: https://github.com/tokio-rs/axum/pull/402
|
||||
[#404]: https://github.com/tokio-rs/axum/pull/404
|
||||
|
||||
# 0.2.8 (07. October, 2021)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user