refactor Arguments

This commit is contained in:
gengteng
2023-09-28 22:30:58 +08:00
parent 6e32395998
commit 1be91ee5b6
2 changed files with 8 additions and 15 deletions

View File

@@ -162,11 +162,12 @@ impl<Arguments> ValidationContext<Arguments> {
/// `T`: data type to validate
/// `Self::A`: dependent arguments
///
pub trait Arguments<'a, T> {
/// Argument type
type A: 'a;
pub trait Arguments<'a, T>
where
T: ValidateArgs<'a>,
{
/// Get dependent arguments
fn get(&'a self) -> Self::A;
fn get(&'a self) -> T::Args;
}
/// `ValidRejection` is returned when the `Valid` extractor fails.
@@ -275,10 +276,7 @@ where
Body: Send + Sync + 'static,
Args: Send + Sync + for<'a> Arguments<'a, <Extractor as HasValidateArgs<'a>>::ValidateArgs>,
Extractor: for<'v> HasValidateArgs<'v> + FromRequest<State, Body>,
for<'v> <Extractor as HasValidateArgs<'v>>::ValidateArgs: ValidateArgs<
'v,
Args = <Args as Arguments<'v, <Extractor as HasValidateArgs<'v>>::ValidateArgs>>::A,
>,
for<'v> <Extractor as HasValidateArgs<'v>>::ValidateArgs: ValidateArgs<'v>,
ValidationContext<Args>: FromRef<State>,
{
type Rejection = ValidRejection<<Extractor as FromRequest<State, Body>>::Rejection>;
@@ -300,10 +298,7 @@ where
State: Send + Sync,
Args: Send + Sync + for<'a> Arguments<'a, <Extractor as HasValidateArgs<'a>>::ValidateArgs>,
Extractor: for<'v> HasValidateArgs<'v> + FromRequestParts<State>,
for<'v> <Extractor as HasValidateArgs<'v>>::ValidateArgs: ValidateArgs<
'v,
Args = <Args as Arguments<'v, <Extractor as HasValidateArgs<'v>>::ValidateArgs>>::A,
>,
for<'v> <Extractor as HasValidateArgs<'v>>::ValidateArgs: ValidateArgs<'v>,
ValidationContext<Args>: FromRef<State>,
{
type Rejection = ValidRejection<<Extractor as FromRequestParts<State>>::Rejection>;

View File

@@ -61,9 +61,7 @@ pub struct ParametersExValidationArguments {
}
impl<'a> Arguments<'a, ParametersEx> for ParametersExValidationArguments {
type A = <ParametersEx as ValidateArgs<'a>>::Args;
fn get(&'a self) -> Self::A {
fn get(&'a self) -> <ParametersEx as ValidateArgs<'a>>::Args {
(&self.v0_range, &self.v1_length_range)
}
}