Skip to content

Commit 1b157a4

Browse files
authored
Enable and fix control flow related clippy lints
1 parent 617594c commit 1b157a4

File tree

10 files changed

+65
-88
lines changed

10 files changed

+65
-88
lines changed

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ await_holding_lock = "warn"
2424
dbg_macro = "warn"
2525
empty_enum = "warn"
2626
enum_glob_use = "warn"
27+
equatable_if_let = "warn"
2728
exit = "warn"
2829
filter_map_next = "warn"
2930
fn_params_excessive_bools = "warn"
@@ -33,6 +34,8 @@ inefficient_to_string = "warn"
3334
linkedlist = "warn"
3435
lossy_float_literal = "warn"
3536
macro_use_imports = "warn"
37+
manual_let_else = "warn"
38+
match_same_arms = "warn"
3639
match_wildcard_for_single_variants = "warn"
3740
mem_forget = "warn"
3841
must_use_candidate = "warn"
@@ -41,6 +44,7 @@ needless_continue = "warn"
4144
option_option = "warn"
4245
rest_pat_in_fully_bound_structs = "warn"
4346
return_self_not_must_use = "warn"
47+
single_match_else = "warn"
4448
str_to_string = "warn"
4549
suboptimal_flops = "warn"
4650
todo = "warn"

axum-extra/src/extract/cached.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,14 @@ where
8888
type Rejection = T::Rejection;
8989

9090
async fn from_request_parts(parts: &mut Parts, state: &S) -> Result<Self, Self::Rejection> {
91-
match Extension::<CachedEntry<T>>::from_request_parts(parts, state).await {
92-
Ok(Extension(CachedEntry(value))) => Ok(Self(value)),
93-
Err(_) => {
94-
let value = T::from_request_parts(parts, state).await?;
95-
parts.extensions.insert(CachedEntry(value.clone()));
96-
Ok(Self(value))
97-
}
91+
if let Ok(Extension(CachedEntry(value))) =
92+
Extension::<CachedEntry<T>>::from_request_parts(parts, state).await
93+
{
94+
Ok(Self(value))
95+
} else {
96+
let value = T::from_request_parts(parts, state).await?;
97+
parts.extensions.insert(CachedEntry(value.clone()));
98+
Ok(Self(value))
9899
}
99100
}
100101
}

axum-extra/src/extract/json_deserializer.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -183,21 +183,15 @@ composite_rejection! {
183183
}
184184

185185
fn json_content_type(headers: &HeaderMap) -> bool {
186-
let content_type = if let Some(content_type) = headers.get(header::CONTENT_TYPE) {
187-
content_type
188-
} else {
186+
let Some(content_type) = headers.get(header::CONTENT_TYPE) else {
189187
return false;
190188
};
191189

192-
let content_type = if let Ok(content_type) = content_type.to_str() {
193-
content_type
194-
} else {
190+
let Ok(content_type) = content_type.to_str() else {
195191
return false;
196192
};
197193

198-
let mime = if let Ok(mime) = content_type.parse::<mime::Mime>() {
199-
mime
200-
} else {
194+
let Ok(mime) = content_type.parse::<mime::Mime>() else {
201195
return false;
202196
};
203197

axum-macros/src/from_request/mod.rs

Lines changed: 35 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -111,23 +111,22 @@ pub(crate) fn expand(item: syn::Item, tr: Trait) -> syn::Result<TokenStream> {
111111
state,
112112
} = parse_attrs("from_request", &attrs)?;
113113

114-
let state = match state {
115-
Some((_, state)) => State::Custom(state),
116-
None => {
117-
let mut inferred_state_types: HashSet<_> =
118-
infer_state_type_from_field_types(&fields)
119-
.chain(infer_state_type_from_field_attributes(&fields))
120-
.collect();
121-
122-
if let Some((_, via)) = &via {
123-
inferred_state_types.extend(state_from_via(&ident, via));
124-
}
114+
let state = if let Some((_, state)) = state {
115+
State::Custom(state)
116+
} else {
117+
let mut inferred_state_types: HashSet<_> =
118+
infer_state_type_from_field_types(&fields)
119+
.chain(infer_state_type_from_field_attributes(&fields))
120+
.collect();
125121

126-
match inferred_state_types.len() {
127-
0 => State::Default(syn::parse_quote!(S)),
128-
1 => State::Custom(inferred_state_types.iter().next().unwrap().to_owned()),
129-
_ => State::CannotInfer,
130-
}
122+
if let Some((_, via)) = &via {
123+
inferred_state_types.extend(state_from_via(&ident, via));
124+
}
125+
126+
match inferred_state_types.len() {
127+
0 => State::Default(syn::parse_quote!(S)),
128+
1 => State::Custom(inferred_state_types.iter().next().unwrap().to_owned()),
129+
_ => State::CannotInfer,
131130
}
132131
};
133132

@@ -147,7 +146,7 @@ pub(crate) fn expand(item: syn::Item, tr: Trait) -> syn::Result<TokenStream> {
147146
}
148147
};
149148

150-
if let State::CannotInfer = state {
149+
if matches!(state, State::CannotInfer) {
151150
let attr_name = match tr {
152151
Trait::FromRequest => "from_request",
153152
Trait::FromRequestParts => "from_request_parts",
@@ -335,17 +334,16 @@ fn impl_struct_by_extracting_each_field(
335334
state: &State,
336335
tr: Trait,
337336
) -> syn::Result<TokenStream> {
338-
let trait_fn_body = match state {
339-
State::CannotInfer => quote! {
337+
let trait_fn_body = if matches!(state, State::CannotInfer) {
338+
quote! {
340339
::std::unimplemented!()
341-
},
342-
_ => {
343-
let extract_fields = extract_fields(&fields, &rejection, tr)?;
344-
quote! {
345-
::std::result::Result::Ok(Self {
346-
#(#extract_fields)*
347-
})
348-
}
340+
}
341+
} else {
342+
let extract_fields = extract_fields(&fields, &rejection, tr)?;
343+
quote! {
344+
::std::result::Result::Ok(Self {
345+
#(#extract_fields)*
346+
})
349347
}
350348
};
351349

@@ -417,15 +415,14 @@ fn extract_fields(
417415
tr: Trait,
418416
) -> syn::Result<Vec<TokenStream>> {
419417
fn member(field: &syn::Field, index: usize) -> TokenStream {
420-
match &field.ident {
421-
Some(ident) => quote! { #ident },
422-
_ => {
423-
let member = syn::Member::Unnamed(syn::Index {
424-
index: index as u32,
425-
span: field.span(),
426-
});
427-
quote! { #member }
428-
}
418+
if let Some(ident) = &field.ident {
419+
quote! { #ident }
420+
} else {
421+
let member = syn::Member::Unnamed(syn::Index {
422+
index: index as u32,
423+
span: field.span(),
424+
});
425+
quote! { #member }
429426
}
430427
}
431428

@@ -642,9 +639,7 @@ fn extract_fields(
642639
}
643640

644641
fn peel_option(ty: &syn::Type) -> Option<&syn::Type> {
645-
let type_path = if let syn::Type::Path(type_path) = ty {
646-
type_path
647-
} else {
642+
let syn::Type::Path(type_path) = ty else {
648643
return None;
649644
};
650645

@@ -673,9 +668,7 @@ fn peel_option(ty: &syn::Type) -> Option<&syn::Type> {
673668
}
674669

675670
fn peel_result_ok(ty: &syn::Type) -> Option<&syn::Type> {
676-
let type_path = if let syn::Type::Path(type_path) = ty {
677-
type_path
678-
} else {
671+
let syn::Type::Path(type_path) = ty else {
679672
return None;
680673
};
681674

axum/src/extract/matched_path.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,7 @@ pub(crate) fn set_matched_path_for_request(
103103
route_id_to_path: &HashMap<RouteId, Arc<str>>,
104104
extensions: &mut http::Extensions,
105105
) {
106-
let matched_path = if let Some(matched_path) = route_id_to_path.get(&id) {
107-
matched_path
108-
} else {
106+
let Some(matched_path) = route_id_to_path.get(&id) else {
109107
#[cfg(debug_assertions)]
110108
panic!("should always have a matched path for a route id");
111109
#[cfg(not(debug_assertions))]

axum/src/extract/mod.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,11 @@ pub use self::ws::WebSocketUpgrade;
8181

8282
// this is duplicated in `axum-extra/src/extract/form.rs`
8383
pub(super) fn has_content_type(headers: &HeaderMap, expected_content_type: &mime::Mime) -> bool {
84-
let content_type = if let Some(content_type) = headers.get(header::CONTENT_TYPE) {
85-
content_type
86-
} else {
84+
let Some(content_type) = headers.get(header::CONTENT_TYPE) else {
8785
return false;
8886
};
8987

90-
let content_type = if let Ok(content_type) = content_type.to_str() {
91-
content_type
92-
} else {
88+
let Ok(content_type) = content_type.to_str() else {
9389
return false;
9490
};
9591

axum/src/extract/path/de.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -639,8 +639,7 @@ enum KeyOrIdx<'de> {
639639
impl<'de> KeyOrIdx<'de> {
640640
fn key(&self) -> &'de str {
641641
match &self {
642-
Self::Key(key) => key,
643-
Self::Idx { key, .. } => key,
642+
Self::Idx { key, .. } | Self::Key(key) => key,
644643
}
645644
}
646645
}

axum/src/extract/ws.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,9 +488,7 @@ fn header_eq(headers: &HeaderMap, key: HeaderName, value: &'static str) -> bool
488488
}
489489

490490
fn header_contains(headers: &HeaderMap, key: HeaderName, value: &'static str) -> bool {
491-
let header = if let Some(header) = headers.get(&key) {
492-
header
493-
} else {
491+
let Some(header) = headers.get(&key) else {
494492
return false;
495493
};
496494

axum/src/routing/method_routing.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -573,8 +573,7 @@ impl AllowHeader {
573573
match (self, other) {
574574
(Self::Skip, _) | (_, Self::Skip) => Self::Skip,
575575
(Self::None, Self::None) => Self::None,
576-
(Self::None, Self::Bytes(pick)) => Self::Bytes(pick),
577-
(Self::Bytes(pick), Self::None) => Self::Bytes(pick),
576+
(Self::None, Self::Bytes(pick)) | (Self::Bytes(pick), Self::None) => Self::Bytes(pick),
578577
(Self::Bytes(mut a), Self::Bytes(b)) => {
579578
a.extend_from_slice(b",");
580579
a.extend_from_slice(&b);

axum/src/routing/mod.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,11 @@ where
187187
T::Response: IntoResponse,
188188
T::Future: Send + 'static,
189189
{
190-
let service = match try_downcast::<Self, _>(service) {
191-
Ok(_) => {
192-
panic!(
193-
"Invalid route: `Router::route_service` cannot be used with `Router`s. \
194-
Use `Router::nest` instead"
195-
);
196-
}
197-
Err(service) => service,
190+
let Err(service) = try_downcast::<Self, _>(service) else {
191+
panic!(
192+
"Invalid route: `Router::route_service` cannot be used with `Router`s. \
193+
Use `Router::nest` instead"
194+
);
198195
};
199196

200197
tap_inner!(self, mut this => {
@@ -256,16 +253,13 @@ where
256253

257254
map_inner!(self, mut this => {
258255
match (this.default_fallback, default_fallback) {
259-
// both have the default fallback
256+
// other has a default fallback
260257
// use the one from other
261-
(true, true) => {}
258+
(_, true) => {}
262259
// this has default fallback, other has a custom fallback
263260
(true, false) => {
264261
this.default_fallback = false;
265262
}
266-
// this has a custom fallback, other has a default
267-
(false, true) => {
268-
}
269263
// both have a custom fallback, not allowed
270264
(false, false) => {
271265
panic!("Cannot merge two `Router`s that both have a fallback")
@@ -707,8 +701,9 @@ where
707701
{
708702
fn merge(self, other: Self) -> Option<Self> {
709703
match (self, other) {
710-
(Self::Default(_), pick @ Self::Default(_)) => Some(pick),
704+
// If either are `Default`, return the opposite one.
711705
(Self::Default(_), pick) | (pick, Self::Default(_)) => Some(pick),
706+
// Otherwise, return None
712707
_ => None,
713708
}
714709
}

0 commit comments

Comments
 (0)