pub trait OperationInput {
// Provided methods
fn operation_input(ctx: &mut GenContext, operation: &mut Operation) { ... }
fn inferred_early_responses(
ctx: &mut GenContext,
operation: &mut Operation,
) -> Vec<(Option<StatusCode>, Response)> { ... }
}Expand description
A trait for operation input schema generation.
This must be implemented for all extractors that appear in documented handlers.
All method implementations are optional.
§Examples
In order to allow an extractor to appear in a handler, the following is enough:
use aide::OperationInput;
struct MyExtractor;
impl OperationInput for MyExtractor {}This will enable usage of the extractor in handlers, but will not add anything to the documentation. To extend the generated documentation refer to some of the provided implementations in this crate.
For simpler cases or wrappers the OperationIo derive macro
can be used to implement this trait.
Provided Methods§
Sourcefn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Modify the operation.
This method gets mutable access to the entire operation, it’s the implementer’s responsibility to detect errors and only modify the operation as much as needed.
There are reusable helpers in aide::operation
to help with both boilerplate and error detection.
Sourcefn inferred_early_responses(
ctx: &mut GenContext,
operation: &mut Operation,
) -> Vec<(Option<StatusCode>, Response)>
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Inferred early responses are used to document early returns for extractors, guards inside handlers. For example these could represent JSON parsing errors, authentication failures.
The function is supposed to return (status code, response) pairs,
if the status code is not specified, the response is assumed to be
a default response.
It’s important for the implementation to be idempotent.
See OperationOutput::inferred_responses for more details.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl OperationInput for &[u8]
impl OperationInput for &[u8]
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl OperationInput for Cow<'_, [u8]>
impl OperationInput for Cow<'_, [u8]>
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl OperationInput for ()
Source§impl OperationInput for String
impl OperationInput for String
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl OperationInput for Vec<u8>
impl OperationInput for Vec<u8>
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl OperationInput for Body
axum only.impl OperationInput for PrivateCookieJar
axum and axum-extra-cookie-private only.impl OperationInput for CookieJar
axum and axum-extra-cookie only.impl OperationInput for Host
axum and axum-extra only.impl OperationInput for MatchedPath
axum and axum-matched-path only.Source§impl OperationInput for Multipart
Available on crate features axum and axum-multipart only.
impl OperationInput for Multipart
axum and axum-multipart only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl OperationInput for OriginalUri
axum and axum-original-uri only.impl OperationInput for RawQuery
axum only.Source§impl OperationInput for WebSocketUpgrade
Available on crate features axum and axum-ws only.
impl OperationInput for WebSocketUpgrade
axum and axum-ws only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl OperationInput for Bytes
Available on crate feature bytes only.
impl OperationInput for Bytes
bytes only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl OperationInput for BytesMut
Available on crate feature bytes only.
impl OperationInput for BytesMut
bytes only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl OperationInput for HeaderMap
http only.impl OperationInput for Method
http only.impl OperationInput for Parts
http only.impl OperationInput for Uri
http only.impl OperationInput for Version
http only.impl<B> OperationInput for Request<B>
http only.Source§impl<T1> OperationInput for (T1,)where
T1: OperationInput,
impl<T1> OperationInput for (T1,)where
T1: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2> OperationInput for (T1, T2)where
T1: OperationInput,
T2: OperationInput,
impl<T1, T2> OperationInput for (T1, T2)where
T1: OperationInput,
T2: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3> OperationInput for (T1, T2, T3)
impl<T1, T2, T3> OperationInput for (T1, T2, T3)
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4> OperationInput for (T1, T2, T3, T4)
impl<T1, T2, T3, T4> OperationInput for (T1, T2, T3, T4)
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5> OperationInput for (T1, T2, T3, T4, T5)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
impl<T1, T2, T3, T4, T5> OperationInput for (T1, T2, T3, T4, T5)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6> OperationInput for (T1, T2, T3, T4, T5, T6)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
impl<T1, T2, T3, T4, T5, T6> OperationInput for (T1, T2, T3, T4, T5, T6)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7> OperationInput for (T1, T2, T3, T4, T5, T6, T7)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7> OperationInput for (T1, T2, T3, T4, T5, T6, T7)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
T15: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
T15: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
T15: OperationInput,
T16: OperationInput,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> OperationInput for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)where
T1: OperationInput,
T2: OperationInput,
T3: OperationInput,
T4: OperationInput,
T5: OperationInput,
T6: OperationInput,
T7: OperationInput,
T8: OperationInput,
T9: OperationInput,
T10: OperationInput,
T11: OperationInput,
T12: OperationInput,
T13: OperationInput,
T14: OperationInput,
T15: OperationInput,
T16: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T> OperationInput for Option<T>where
T: OperationInput,
impl<T> OperationInput for Option<T>where
T: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Box<T>where
T: OperationInput,
impl<T> OperationInput for Box<T>where
T: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Rc<T>where
T: OperationInput,
impl<T> OperationInput for Rc<T>where
T: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Arc<T>where
T: OperationInput,
impl<T> OperationInput for Arc<T>where
T: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Cached<T>where
T: OperationInput,
Available on crate features axum and axum-extra-cached only.
impl<T> OperationInput for Cached<T>where
T: OperationInput,
axum and axum-extra-cached only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Form<T>where
T: JsonSchema,
Available on crate features axum and axum-extra-form only.
impl<T> OperationInput for Form<T>where
T: JsonSchema,
axum and axum-extra-form only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for JsonDeserializer<T>where
T: JsonSchema,
Available on crate features axum and axum-extra-json-deserializer only.
impl<T> OperationInput for JsonDeserializer<T>where
T: JsonSchema,
axum and axum-extra-json-deserializer only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Query<T>where
T: JsonSchema,
Available on crate features axum and axum-extra-query only.
impl<T> OperationInput for Query<T>where
T: JsonSchema,
axum and axum-extra-query only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for TypedHeader<T>where
T: Header,
Available on crate features axum and axum-extra-headers only.
impl<T> OperationInput for TypedHeader<T>where
T: Header,
axum and axum-extra-headers only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl<T> OperationInput for Extension<T>
axum only.impl<T> OperationInput for ConnectInfo<T>
axum and axum-tokio only.Source§impl<T> OperationInput for Path<T>where
T: JsonSchema,
Available on crate feature axum only.
impl<T> OperationInput for Path<T>where
T: JsonSchema,
axum only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Query<T>where
T: JsonSchema,
Available on crate features axum and axum-query only.
impl<T> OperationInput for Query<T>where
T: JsonSchema,
axum and axum-query only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl<T> OperationInput for State<T>
axum only.Source§impl<T> OperationInput for Form<T>where
T: JsonSchema,
Available on crate features axum and axum-form only.
impl<T> OperationInput for Form<T>where
T: JsonSchema,
axum and axum-form only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for Json<T>where
T: JsonSchema,
Available on crate features axum and axum-json only.
impl<T> OperationInput for Json<T>where
T: JsonSchema,
axum and axum-json only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for OptionalQsQuery<T>where
T: JsonSchema,
Available on crate features serde_qs and axum only.
impl<T> OperationInput for OptionalQsQuery<T>where
T: JsonSchema,
serde_qs and axum only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T> OperationInput for QsQuery<T>where
T: JsonSchema,
Available on crate features serde_qs and axum only.
impl<T> OperationInput for QsQuery<T>where
T: JsonSchema,
serde_qs and axum only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Source§impl<T, E> OperationInput for Result<T, E>where
T: OperationInput,
impl<T, E> OperationInput for Result<T, E>where
T: OperationInput,
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation, ) -> Vec<(Option<StatusCode>, Response)>
Source§impl<T, R> OperationInput for WithRejection<T, R>where
T: OperationInput,
Available on crate features axum and axum-extra-with-rejection only.
impl<T, R> OperationInput for WithRejection<T, R>where
T: OperationInput,
axum and axum-extra-with-rejection only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
Implementors§
impl<T> OperationInput for TypedPath<T>where
T: TypedPath + JsonSchema,
axum-extra-typed-routing and axum only.