axum/axum-macros
David Pedersen c3f3db79ec
Support State with #[derive(FromRequest[Parts])] (#1391)
* Support `State` with `#[derive(FromRequest[Parts])]`

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

This makes it possible to extract things via `State` in
`#[derive(FromRequet)]`:

```rust
struct Foo {
    state: State<AppState>,
}
```

The state can also be inferred in a lot of cases so you only need to
write:

```rust
struct Foo {
    // since we're using `State<AppState>` we know the state has to be
    // `AppState`
    state: State<AppState>,
}
```

Same for

```rust
struct Foo {
    #[from_request(via(State))]
    state: AppState,
}
```

And

```rust
struct AppState {}
```

I think I've covered all the edge cases but there are (unsurprisingly) a
few.

* make sure things can be combined with other extractors

* main functions in ui tests don't need to be async

* Add test for multiple identicaly state types

* Add failing test for multiple states
2022-09-23 23:50:50 +02:00
..
src Support State with #[derive(FromRequest[Parts])] (#1391) 2022-09-23 23:50:50 +02:00
tests Support State with #[derive(FromRequest[Parts])] (#1391) 2022-09-23 23:50:50 +02:00
Cargo.toml Support State with #[derive(FromRequest[Parts])] (#1391) 2022-09-23 23:50:50 +02:00
CHANGELOG.md Bump version of all crates (#1310) 2022-08-23 22:57:13 +02:00
LICENSE Move axum-debug into axum-macros (#724) 2022-01-26 23:27:22 +01:00
README.md Use new Cargo features to avoid implicit features for optional dependencies (#1239) 2022-08-09 18:43:02 +02:00

axum-macros

Build status Crates.io Documentation

Macros for axum.

More information about this crate can be found in the crate documentation.

Safety

This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

Minimum supported Rust version

axum-macros's MSRV is 1.60.

Getting Help

You're also welcome to ask in the Discord channel or open an issue with your question.

Contributing

🎈 Thanks for your help improving the project! We are so happy to have you! We have a contributing guide to help you get involved in the axum project.

License

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in axum by you, shall be licensed as MIT, without any additional terms or conditions.