Easily convert typed paths into URIs (#790)

* Easily convert typed paths into URIs

`#[derive(TypedPath)]` will now also generate `TryFrom<_> for Uri` for
easily converting paths into URIs for use with `Redirect` and friends.

Fixes https://github.com/tokio-rs/axum/issues/789

* Use a method on the `TypedPath` trait to convert to `Uri`

* fix doc ref

* Update changelogs
This commit is contained in:
David Pedersen
2022-02-28 09:58:22 +01:00
committed by GitHub
parent 67c385cd2d
commit da74084146
5 changed files with 45 additions and 2 deletions
@@ -0,0 +1,23 @@
use axum_extra::routing::TypedPath;
use axum::http::Uri;
use serde::Deserialize;
#[derive(TypedPath, Deserialize)]
#[typed_path("/:id")]
struct Named {
id: u32,
}
#[derive(TypedPath, Deserialize)]
#[typed_path("/:id")]
struct Unnamed(u32);
#[derive(TypedPath, Deserialize)]
#[typed_path("/")]
struct Unit;
fn main() {
let _: Uri = Named { id: 1 }.to_uri();
let _: Uri = Unnamed(1).to_uri();
let _: Uri = Unit.to_uri();
}