Trait aide::operation::OperationInput
source · 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<u16>, 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<u16>, Response)>
fn inferred_early_responses( ctx: &mut GenContext, operation: &mut Operation ) -> Vec<(Option<u16>, 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.
Object Safety§
Implementations on Foreign Types§
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-extra
and axum
and axum-extra-cookie-private
only.impl OperationInput for CookieJar
axum-extra
and axum
and axum-extra-cookie
only.impl OperationInput for Host
axum
only.impl OperationInput for MatchedPath
axum
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 RawQuery
axum
only.impl OperationInput for OriginalUri
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.source§impl<'a> OperationInput for &'a [u8]
impl<'a> OperationInput for &'a [u8]
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
source§impl<'a> OperationInput for Cow<'a, [u8]>
impl<'a> OperationInput for Cow<'a, [u8]>
fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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-extra
and axum
only.
impl<T> OperationInput for Cached<T>where
T: OperationInput,
axum-extra
and axum
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-extra
and axum
and axum-extra-form
only.
impl<T> OperationInput for Form<T>where
T: JsonSchema,
axum-extra
and axum
and axum-extra-form
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-extra
and axum
and axum-extra-query
only.
impl<T> OperationInput for Query<T>where
T: JsonSchema,
axum-extra
and 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-headers
only.
impl<T> OperationInput for TypedHeader<T>where
T: Header,
axum
and axum-headers
only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
impl<T> OperationInput for Extension<T>
axum
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 feature axum
only.
impl<T> OperationInput for Query<T>where
T: JsonSchema,
axum
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 feature axum
only.
impl<T> OperationInput for Form<T>where
T: JsonSchema,
axum
only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
source§impl<T> OperationInput for Json<T>where
T: JsonSchema,
Available on crate feature axum
only.
impl<T> OperationInput for Json<T>where
T: JsonSchema,
axum
only.fn operation_input(ctx: &mut GenContext, operation: &mut Operation)
source§impl<T> OperationInput for JwtClaims<T>
Available on crate features jwt-authorizer
and axum
only.
impl<T> OperationInput for JwtClaims<T>
jwt-authorizer
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<u16>, Response)>
source§impl<T, R> OperationInput for WithRejection<T, R>where
T: OperationInput,
Available on crate features axum-extra
and axum
only.
impl<T, R> OperationInput for WithRejection<T, R>where
T: OperationInput,
axum-extra
and axum
only.