diff --git a/axum-core/src/response/into_response.rs b/axum-core/src/response/into_response.rs index 608bb192..915b55ef 100644 --- a/axum-core/src/response/into_response.rs +++ b/axum-core/src/response/into_response.rs @@ -109,9 +109,6 @@ use std::{ /// let app = Router::new().route("/", get(|| async { MyBody })); /// # let _: Router = app; /// ``` -#[diagnostic::on_unimplemented( - note = "See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponse.html` for details" -)] pub trait IntoResponse { /// Create a response. #[must_use] diff --git a/axum-core/src/response/into_response_parts.rs b/axum-core/src/response/into_response_parts.rs index 55b705fc..95564823 100644 --- a/axum-core/src/response/into_response_parts.rs +++ b/axum-core/src/response/into_response_parts.rs @@ -70,9 +70,6 @@ use std::{convert::Infallible, fmt}; /// SetHeader("x-foo", "custom") /// } /// ``` -#[diagnostic::on_unimplemented( - note = "See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponseParts.html` for details" -)] pub trait IntoResponseParts { /// The type returned in the event of an error. /// diff --git a/axum-macros/tests/debug_handler/fail/argument_not_extractor.stderr b/axum-macros/tests/debug_handler/fail/argument_not_extractor.stderr index 681473ea..29cb4765 100644 --- a/axum-macros/tests/debug_handler/fail/argument_not_extractor.stderr +++ b/axum-macros/tests/debug_handler/fail/argument_not_extractor.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `bool: FromRequest<(), axum_core::extract::private --> tests/debug_handler/fail/argument_not_extractor.rs:4:24 | 4 | async fn handler(_foo: bool) {} - | ^^^^ the trait `FromRequestParts<()>` is not implemented for `bool` + | ^^^^ the trait `FromRequestParts<()>` is not implemented for `bool`, which is required by `bool: FromRequest<(), _>` | = note: Function argument is not a valid axum extractor. See `https://docs.rs/axum/0.8/axum/extract/index.html` for details diff --git a/axum-macros/tests/debug_handler/fail/extension_not_clone.stderr b/axum-macros/tests/debug_handler/fail/extension_not_clone.stderr index aaaeba59..1e13b8e4 100644 --- a/axum-macros/tests/debug_handler/fail/extension_not_clone.stderr +++ b/axum-macros/tests/debug_handler/fail/extension_not_clone.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `NonCloneType: Clone` is not satisfied --> tests/debug_handler/fail/extension_not_clone.rs:7:38 | 7 | async fn test_extension_non_clone(_: Extension) {} - | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `NonCloneType` + | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `NonCloneType`, which is required by `Extension: FromRequest<(), _>` | = help: the following other types implement trait `FromRequest`: Body diff --git a/axum-macros/tests/debug_handler/fail/json_not_deserialize.stderr b/axum-macros/tests/debug_handler/fail/json_not_deserialize.stderr index bf3b8b3f..a4b0cf95 100644 --- a/axum-macros/tests/debug_handler/fail/json_not_deserialize.stderr +++ b/axum-macros/tests/debug_handler/fail/json_not_deserialize.stderr @@ -2,13 +2,8 @@ error[E0277]: the trait bound `Struct: serde::Deserialize<'de>` is not satisfied --> tests/debug_handler/fail/json_not_deserialize.rs:7:24 | 7 | async fn handler(_foo: Json) {} - | ^^^^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^^^^ the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `Struct`, which is required by `Json: FromRequest<()>` | -help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `Struct` - --> tests/debug_handler/fail/json_not_deserialize.rs:4:1 - | -4 | struct Struct {} - | ^^^^^^^^^^^^^ = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `Struct` type = note: for types from other crates check whether the crate offers a `serde` feature flag = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: @@ -23,6 +18,7 @@ help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented f and $N others = note: required for `Struct` to implement `serde_core::de::DeserializeOwned` = note: required for `Json` to implement `FromRequest<()>` + = help: see issue #48214 help: add `#![feature(trivial_bounds)]` to the crate attributes to enable | 1 + #![feature(trivial_bounds)] @@ -32,13 +28,8 @@ error[E0277]: the trait bound `Struct: serde::Deserialize<'de>` is not satisfied --> tests/debug_handler/fail/json_not_deserialize.rs:7:24 | 7 | async fn handler(_foo: Json) {} - | ^^^^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^^^^ the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `Struct`, which is required by `Json: FromRequest<()>` | -help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `Struct` - --> tests/debug_handler/fail/json_not_deserialize.rs:4:1 - | -4 | struct Struct {} - | ^^^^^^^^^^^^^ = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `Struct` type = note: for types from other crates check whether the crate offers a `serde` feature flag = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: diff --git a/axum-macros/tests/debug_handler/fail/not_send.stderr b/axum-macros/tests/debug_handler/fail/not_send.stderr index 2e2cede3..13ab83dd 100644 --- a/axum-macros/tests/debug_handler/fail/not_send.stderr +++ b/axum-macros/tests/debug_handler/fail/not_send.stderr @@ -4,7 +4,7 @@ error: future cannot be sent between threads safely 3 | #[debug_handler] | ^^^^^^^^^^^^^^^^ future returned by `handler` is not `Send` | - = help: within `impl Future`, the trait `Send` is not implemented for `Rc<()>` + = help: within `impl Future`, the trait `Send` is not implemented for `Rc<()>`, which is required by `impl Future: Send` note: future is not `Send` as this value is used across an await --> tests/debug_handler/fail/not_send.rs:6:14 | diff --git a/axum-macros/tests/debug_handler/fail/output_tuple_too_many.stderr b/axum-macros/tests/debug_handler/fail/output_tuple_too_many.stderr index ce3c257b..fb31388a 100644 --- a/axum-macros/tests/debug_handler/fail/output_tuple_too_many.stderr +++ b/axum-macros/tests/debug_handler/fail/output_tuple_too_many.stderr @@ -1,11 +1,11 @@ error: Cannot return tuples with more than 17 elements --> tests/debug_handler/fail/output_tuple_too_many.rs:4:20 | - 4 | async fn handler() -> ( +4 | async fn handler() -> ( | ____________________^ - 5 | | axum::http::StatusCode, - 6 | | AppendHeaders<[(axum::http::HeaderName, &'static str); 1]>, - 7 | | AppendHeaders<[(axum::http::HeaderName, &'static str); 1]>, +5 | | axum::http::StatusCode, +6 | | AppendHeaders<[(axum::http::HeaderName, &'static str); 1]>, +7 | | AppendHeaders<[(axum::http::HeaderName, &'static str); 1]>, ... | 23 | | axum::http::StatusCode, 24 | | ) { diff --git a/axum-macros/tests/debug_handler/fail/single_wrong_return_tuple.stderr b/axum-macros/tests/debug_handler/fail/single_wrong_return_tuple.stderr index da8b0b88..89093735 100644 --- a/axum-macros/tests/debug_handler/fail/single_wrong_return_tuple.stderr +++ b/axum-macros/tests/debug_handler/fail/single_wrong_return_tuple.stderr @@ -2,14 +2,8 @@ error[E0277]: the trait bound `NotIntoResponse: IntoResponse` is not satisfied --> tests/debug_handler/fail/single_wrong_return_tuple.rs:6:23 | 6 | async fn handler() -> (NotIntoResponse) { - | ^^^^^^^^^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^^^^^^^^^ the trait `IntoResponse` is not implemented for `NotIntoResponse` | -help: the trait `IntoResponse` is not implemented for `NotIntoResponse` - --> tests/debug_handler/fail/single_wrong_return_tuple.rs:3:1 - | -3 | struct NotIntoResponse; - | ^^^^^^^^^^^^^^^^^^^^^^ - = note: See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponse.html` for details = help: the following other types implement trait `IntoResponse`: &'static [u8; N] &'static [u8] diff --git a/axum-macros/tests/debug_handler/fail/too_many_extractors.stderr b/axum-macros/tests/debug_handler/fail/too_many_extractors.stderr index 1f663bfb..2cf6486b 100644 --- a/axum-macros/tests/debug_handler/fail/too_many_extractors.stderr +++ b/axum-macros/tests/debug_handler/fail/too_many_extractors.stderr @@ -1,10 +1,10 @@ error: Handlers cannot take more than 16 arguments. Use `(a, b): (ExtractorA, ExtractorA)` to further nest extractors --> tests/debug_handler/fail/too_many_extractors.rs:6:5 | - 6 | / _e1: Uri, - 7 | | _e2: Uri, - 8 | | _e3: Uri, - 9 | | _e4: Uri, +6 | / _e1: Uri, +7 | | _e2: Uri, +8 | | _e3: Uri, +9 | | _e4: Uri, ... | 21 | | _e16: Uri, 22 | | _e17: Uri, diff --git a/axum-macros/tests/debug_handler/fail/wrong_return_tuple.stderr b/axum-macros/tests/debug_handler/fail/wrong_return_tuple.stderr index cae0249c..8779d358 100644 --- a/axum-macros/tests/debug_handler/fail/wrong_return_tuple.stderr +++ b/axum-macros/tests/debug_handler/fail/wrong_return_tuple.stderr @@ -8,14 +8,8 @@ error[E0277]: the trait bound `CustomIntoResponse: IntoResponseParts` is not sat --> tests/debug_handler/fail/wrong_return_tuple.rs:21:5 | 21 | CustomIntoResponse, - | ^^^^^^^^^^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^^^^^^^^^^ the trait `IntoResponseParts` is not implemented for `CustomIntoResponse` | -help: the trait `IntoResponseParts` is not implemented for `CustomIntoResponse` - --> tests/debug_handler/fail/wrong_return_tuple.rs:12:1 - | -12 | struct CustomIntoResponse {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - = note: See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponseParts.html` for details = help: the following other types implement trait `IntoResponseParts`: () (T1, T2) @@ -26,23 +20,18 @@ help: the trait `IntoResponseParts` is not implemented for `CustomIntoResponse` (T1, T2, T3, T4, T5, T6, T7) (T1, T2, T3, T4, T5, T6, T7, T8) and $N others + = help: see issue #48214 help: add `#![feature(trivial_bounds)]` to the crate attributes to enable | - 3 + #![feature(trivial_bounds)] +3 + #![feature(trivial_bounds)] | error[E0277]: the trait bound `CustomIntoResponse: IntoResponseParts` is not satisfied --> tests/debug_handler/fail/wrong_return_tuple.rs:21:5 | 21 | CustomIntoResponse, - | ^^^^^^^^^^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^^^^^^^^^^ the trait `IntoResponseParts` is not implemented for `CustomIntoResponse` | -help: the trait `IntoResponseParts` is not implemented for `CustomIntoResponse` - --> tests/debug_handler/fail/wrong_return_tuple.rs:12:1 - | -12 | struct CustomIntoResponse {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - = note: See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponseParts.html` for details = help: the following other types implement trait `IntoResponseParts`: () (T1, T2) diff --git a/axum-macros/tests/debug_handler/fail/wrong_return_type.stderr b/axum-macros/tests/debug_handler/fail/wrong_return_type.stderr index 13a7435c..c305e7e7 100644 --- a/axum-macros/tests/debug_handler/fail/wrong_return_type.stderr +++ b/axum-macros/tests/debug_handler/fail/wrong_return_type.stderr @@ -4,7 +4,6 @@ error[E0277]: the trait bound `bool: IntoResponse` is not satisfied 4 | async fn handler() -> bool { | ^^^^ the trait `IntoResponse` is not implemented for `bool` | - = note: See `https://docs.rs/axum/0.8/axum/response/trait.IntoResponse.html` for details = help: the following other types implement trait `IntoResponse`: &'static [u8; N] &'static [u8] diff --git a/axum-macros/tests/from_request/fail/generic_without_via.stderr b/axum-macros/tests/from_request/fail/generic_without_via.stderr index 918b42a4..ecb18877 100644 --- a/axum-macros/tests/from_request/fail/generic_without_via.stderr +++ b/axum-macros/tests/from_request/fail/generic_without_via.stderr @@ -16,12 +16,9 @@ error[E0277]: the trait bound `fn(Extractor<()>) -> impl Future {fo note: required by a bound in `axum::routing::get` --> $WORKSPACE/axum/src/routing/method_routing.rs | - | H: Handler, - | ^^^^^^^^^^^^^ required by this bound in `get` -... | top_level_handler_fn!(get, GET); - | ------------------------------- + | ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^ | | | | | required by a bound in this function - | in this macro invocation + | required by this bound in `get` = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/axum-macros/tests/from_request/fail/generic_without_via_rejection.stderr b/axum-macros/tests/from_request/fail/generic_without_via_rejection.stderr index 75738ed0..c162a915 100644 --- a/axum-macros/tests/from_request/fail/generic_without_via_rejection.stderr +++ b/axum-macros/tests/from_request/fail/generic_without_via_rejection.stderr @@ -16,12 +16,9 @@ error[E0277]: the trait bound `fn(Extractor<()>) -> impl Future {fo note: required by a bound in `axum::routing::get` --> $WORKSPACE/axum/src/routing/method_routing.rs | - | H: Handler, - | ^^^^^^^^^^^^^ required by this bound in `get` -... | top_level_handler_fn!(get, GET); - | ------------------------------- + | ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^ | | | | | required by a bound in this function - | in this macro invocation + | required by this bound in `get` = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/axum-macros/tests/from_request/fail/override_rejection_on_enum_without_via.stderr b/axum-macros/tests/from_request/fail/override_rejection_on_enum_without_via.stderr index 10cb4a21..418b5a05 100644 --- a/axum-macros/tests/from_request/fail/override_rejection_on_enum_without_via.stderr +++ b/axum-macros/tests/from_request/fail/override_rejection_on_enum_without_via.stderr @@ -16,35 +16,28 @@ error[E0277]: the trait bound `fn(MyExtractor) -> impl Future {hand note: required by a bound in `axum::routing::get` --> $WORKSPACE/axum/src/routing/method_routing.rs | - | H: Handler, - | ^^^^^^^^^^^^^ required by this bound in `get` -... | top_level_handler_fn!(get, GET); - | ------------------------------- + | ^^^^^^^^^^^^^^^^^^^^^^---^^^^^^ | | | | | required by a bound in this function - | in this macro invocation + | required by this bound in `get` = note: this error originates in the macro `top_level_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `fn(Result) -> impl Future {handler_result}: Handler<_, _>` is not satisfied --> tests/from_request/fail/override_rejection_on_enum_without_via.rs:10:64 | 10 | let _: Router = Router::new().route("/", get(handler).post(handler_result)); - | ---- ^^^^^^^^^^^^^^ unsatisfied trait bound + | ---- ^^^^^^^^^^^^^^ the trait `Handler<_, _>` is not implemented for fn item `fn(Result) -> impl Future {handler_result}` | | | required by a bound introduced by this call | - = help: the trait `Handler<_, _>` is not implemented for fn item `fn(Result) -> impl Future {handler_result}` = note: Consider using `#[axum::debug_handler]` to improve the error message note: required by a bound in `MethodRouter::::post` --> $WORKSPACE/axum/src/routing/method_routing.rs | - | H: Handler, - | ^^^^^^^^^^^^^ required by this bound in `MethodRouter::::post` -... | chained_handler_fn!(post, POST); - | ------------------------------- + | ^^^^^^^^^^^^^^^^^^^^----^^^^^^^ | | | | | required by a bound in this associated function - | in this macro invocation + | required by this bound in `MethodRouter::::post` = note: this error originates in the macro `chained_handler_fn` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/axum-macros/tests/typed_path/fail/missing_capture.stderr b/axum-macros/tests/typed_path/fail/missing_capture.stderr index 5835fb1f..85865a52 100644 --- a/axum-macros/tests/typed_path/fail/missing_capture.stderr +++ b/axum-macros/tests/typed_path/fail/missing_capture.stderr @@ -10,9 +10,5 @@ help: include the missing field in the pattern | ++++++ help: if you don't care about this missing field, you can explicitly ignore it | -5 | #[typed_path("/users" { id: _ })] - | +++++++++ -help: or always ignore missing fields here - | 5 | #[typed_path("/users" { .. })] | ++++++ diff --git a/axum-macros/tests/typed_path/fail/not_deserialize.stderr b/axum-macros/tests/typed_path/fail/not_deserialize.stderr index fd817973..4534b19e 100644 --- a/axum-macros/tests/typed_path/fail/not_deserialize.stderr +++ b/axum-macros/tests/typed_path/fail/not_deserialize.stderr @@ -1,39 +1,9 @@ -error[E0277]: the trait bound `MyPath: serde::de::DeserializeOwned` is not satisfied - --> tests/typed_path/fail/not_deserialize.rs:3:10 - | -3 | #[derive(TypedPath)] - | ^^^^^^^^^ unsatisfied trait bound - | -help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath` - --> tests/typed_path/fail/not_deserialize.rs:5:1 - | -5 | struct MyPath { - | ^^^^^^^^^^^^^ - = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: - &'a [u8] - &'a serde_json::raw::RawValue - &'a std::path::Path - &'a str - () - (T,) - (T0, T1) - (T0, T1, T2) - and $N others - = note: required for `MyPath` to implement `serde_core::de::DeserializeOwned` - = note: required for `axum::extract::Path` to implement `FromRequestParts` - = note: this error originates in the derive macro `TypedPath` (in Nightly builds, run with -Z macro-backtrace for more info) - error[E0277]: the trait bound `MyPath: serde::Deserialize<'de>` is not satisfied --> tests/typed_path/fail/not_deserialize.rs:3:10 | 3 | #[derive(TypedPath)] - | ^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^ the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath`, which is required by `axum::extract::Path: FromRequestParts` | -help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath` - --> tests/typed_path/fail/not_deserialize.rs:5:1 - | -5 | struct MyPath { - | ^^^^^^^^^^^^^ = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyPath` type = note: for types from other crates check whether the crate offers a `serde` feature flag = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: @@ -53,13 +23,8 @@ error[E0277]: the trait bound `MyPath: serde::de::DeserializeOwned` is not satis --> tests/typed_path/fail/not_deserialize.rs:3:10 | 3 | #[derive(TypedPath)] - | ^^^^^^^^^ unsatisfied trait bound + | ^^^^^^^^^ the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath`, which is required by `axum::extract::Path: FromRequestParts` | -help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath` - --> tests/typed_path/fail/not_deserialize.rs:5:1 - | -5 | struct MyPath { - | ^^^^^^^^^^^^^ = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: &'a [u8] &'a serde_json::raw::RawValue @@ -72,3 +37,23 @@ help: the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented f and $N others = note: required for `MyPath` to implement `serde_core::de::DeserializeOwned` = note: required for `axum::extract::Path` to implement `FromRequestParts` + +error[E0277]: the trait bound `MyPath: serde::de::DeserializeOwned` is not satisfied + --> tests/typed_path/fail/not_deserialize.rs:3:10 + | +3 | #[derive(TypedPath)] + | ^^^^^^^^^ the trait `for<'de> serde_core::de::Deserialize<'de>` is not implemented for `MyPath`, which is required by `axum::extract::Path: FromRequestParts` + | + = help: the following other types implement trait `serde_core::de::Deserialize<'de>`: + &'a [u8] + &'a serde_json::raw::RawValue + &'a std::path::Path + &'a str + () + (T,) + (T0, T1) + (T0, T1, T2) + and $N others + = note: required for `MyPath` to implement `serde_core::de::DeserializeOwned` + = note: required for `axum::extract::Path` to implement `FromRequestParts` + = note: this error originates in the derive macro `TypedPath` (in Nightly builds, run with -Z macro-backtrace for more info)