mirror of
https://github.com/tokio-rs/axum.git
synced 2024-12-12 09:50:45 +01:00
Centralize lint configuration (#3055)
This commit is contained in:
parent
2eaed0badc
commit
d84136e1e4
19 changed files with 66 additions and 161 deletions
38
Cargo.toml
38
Cargo.toml
|
@ -8,3 +8,41 @@ resolver = "2"
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
rust-version = "1.75"
|
rust-version = "1.75"
|
||||||
|
|
||||||
|
[workspace.lints.rust]
|
||||||
|
unsafe_code = "forbid"
|
||||||
|
|
||||||
|
rust_2018_idioms = { level = "warn", priority = -1 }
|
||||||
|
missing_debug_implementations = "warn"
|
||||||
|
missing_docs = "warn"
|
||||||
|
unreachable_pub = "warn"
|
||||||
|
|
||||||
|
[workspace.lints.clippy]
|
||||||
|
type_complexity = "allow"
|
||||||
|
|
||||||
|
await_holding_lock = "warn"
|
||||||
|
dbg_macro = "warn"
|
||||||
|
empty_enum = "warn"
|
||||||
|
enum_glob_use = "warn"
|
||||||
|
exit = "warn"
|
||||||
|
filter_map_next = "warn"
|
||||||
|
fn_params_excessive_bools = "warn"
|
||||||
|
if_let_mutex = "warn"
|
||||||
|
imprecise_flops = "warn"
|
||||||
|
inefficient_to_string = "warn"
|
||||||
|
linkedlist = "warn"
|
||||||
|
lossy_float_literal = "warn"
|
||||||
|
macro_use_imports = "warn"
|
||||||
|
match_on_vec_items = "warn"
|
||||||
|
match_wildcard_for_single_variants = "warn"
|
||||||
|
mem_forget = "warn"
|
||||||
|
needless_borrow = "warn"
|
||||||
|
needless_continue = "warn"
|
||||||
|
option_option = "warn"
|
||||||
|
rest_pat_in_fully_bound_structs = "warn"
|
||||||
|
str_to_string = "warn"
|
||||||
|
suboptimal_flops = "warn"
|
||||||
|
todo = "warn"
|
||||||
|
unnested_or_patterns = "warn"
|
||||||
|
unused_self = "warn"
|
||||||
|
verbose_file_reads = "warn"
|
||||||
|
|
|
@ -42,6 +42,9 @@ hyper = "1.0.0"
|
||||||
tokio = { version = "1.25.0", features = ["macros"] }
|
tokio = { version = "1.25.0", features = ["macros"] }
|
||||||
tower-http = { version = "0.6.0", features = ["limit"] }
|
tower-http = { version = "0.6.0", features = ["limit"] }
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
|
||||||
[package.metadata.cargo-public-api-crates]
|
[package.metadata.cargo-public-api-crates]
|
||||||
allowed = [
|
allowed = [
|
||||||
# not 1.0
|
# not 1.0
|
||||||
|
|
|
@ -8,43 +8,6 @@
|
||||||
//! [`axum`]: https://crates.io/crates/axum
|
//! [`axum`]: https://crates.io/crates/axum
|
||||||
//! [`axum-core`]: http://crates.io/crates/axum-core
|
//! [`axum-core`]: http://crates.io/crates/axum-core
|
||||||
|
|
||||||
#![warn(
|
|
||||||
clippy::all,
|
|
||||||
clippy::dbg_macro,
|
|
||||||
clippy::todo,
|
|
||||||
clippy::empty_enum,
|
|
||||||
clippy::enum_glob_use,
|
|
||||||
clippy::mem_forget,
|
|
||||||
clippy::unused_self,
|
|
||||||
clippy::filter_map_next,
|
|
||||||
clippy::needless_continue,
|
|
||||||
clippy::needless_borrow,
|
|
||||||
clippy::match_wildcard_for_single_variants,
|
|
||||||
clippy::if_let_mutex,
|
|
||||||
clippy::await_holding_lock,
|
|
||||||
clippy::match_on_vec_items,
|
|
||||||
clippy::imprecise_flops,
|
|
||||||
clippy::suboptimal_flops,
|
|
||||||
clippy::lossy_float_literal,
|
|
||||||
clippy::rest_pat_in_fully_bound_structs,
|
|
||||||
clippy::fn_params_excessive_bools,
|
|
||||||
clippy::exit,
|
|
||||||
clippy::inefficient_to_string,
|
|
||||||
clippy::linkedlist,
|
|
||||||
clippy::macro_use_imports,
|
|
||||||
clippy::option_option,
|
|
||||||
clippy::verbose_file_reads,
|
|
||||||
clippy::unnested_or_patterns,
|
|
||||||
clippy::str_to_string,
|
|
||||||
rust_2018_idioms,
|
|
||||||
future_incompatible,
|
|
||||||
nonstandard_style,
|
|
||||||
missing_debug_implementations,
|
|
||||||
missing_docs
|
|
||||||
)]
|
|
||||||
#![deny(unreachable_pub)]
|
|
||||||
#![allow(elided_lifetimes_in_paths, clippy::type_complexity)]
|
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(test, allow(clippy::float_cmp))]
|
#![cfg_attr(test, allow(clippy::float_cmp))]
|
||||||
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,9 @@ tokio = { version = "1.14", features = ["full"] }
|
||||||
tower = { version = "0.5.1", features = ["util"] }
|
tower = { version = "0.5.1", features = ["util"] }
|
||||||
tower-http = { version = "0.6.0", features = ["map-response-body", "timeout"] }
|
tower-http = { version = "0.6.0", features = ["map-response-body", "timeout"] }
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
all-features = true
|
all-features = true
|
||||||
|
|
||||||
|
|
|
@ -28,43 +28,6 @@
|
||||||
//!
|
//!
|
||||||
//! [`axum`]: https://crates.io/crates/axum
|
//! [`axum`]: https://crates.io/crates/axum
|
||||||
|
|
||||||
#![warn(
|
|
||||||
clippy::all,
|
|
||||||
clippy::dbg_macro,
|
|
||||||
clippy::todo,
|
|
||||||
clippy::empty_enum,
|
|
||||||
clippy::enum_glob_use,
|
|
||||||
clippy::mem_forget,
|
|
||||||
clippy::unused_self,
|
|
||||||
clippy::filter_map_next,
|
|
||||||
clippy::needless_continue,
|
|
||||||
clippy::needless_borrow,
|
|
||||||
clippy::match_wildcard_for_single_variants,
|
|
||||||
clippy::if_let_mutex,
|
|
||||||
clippy::await_holding_lock,
|
|
||||||
clippy::match_on_vec_items,
|
|
||||||
clippy::imprecise_flops,
|
|
||||||
clippy::suboptimal_flops,
|
|
||||||
clippy::lossy_float_literal,
|
|
||||||
clippy::rest_pat_in_fully_bound_structs,
|
|
||||||
clippy::fn_params_excessive_bools,
|
|
||||||
clippy::exit,
|
|
||||||
clippy::inefficient_to_string,
|
|
||||||
clippy::linkedlist,
|
|
||||||
clippy::macro_use_imports,
|
|
||||||
clippy::option_option,
|
|
||||||
clippy::verbose_file_reads,
|
|
||||||
clippy::unnested_or_patterns,
|
|
||||||
clippy::str_to_string,
|
|
||||||
rust_2018_idioms,
|
|
||||||
future_incompatible,
|
|
||||||
nonstandard_style,
|
|
||||||
missing_debug_implementations,
|
|
||||||
missing_docs
|
|
||||||
)]
|
|
||||||
#![deny(unreachable_pub)]
|
|
||||||
#![allow(elided_lifetimes_in_paths, clippy::type_complexity)]
|
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
|
||||||
#![cfg_attr(test, allow(clippy::float_cmp))]
|
#![cfg_attr(test, allow(clippy::float_cmp))]
|
||||||
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
||||||
|
|
|
@ -38,6 +38,9 @@ syn = { version = "2.0", features = ["full", "extra-traits"] }
|
||||||
tokio = { version = "1.25.0", features = ["full"] }
|
tokio = { version = "1.25.0", features = ["full"] }
|
||||||
trybuild = "1.0.63"
|
trybuild = "1.0.63"
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
|
||||||
[package.metadata.cargo-public-api-crates]
|
[package.metadata.cargo-public-api-crates]
|
||||||
allowed = []
|
allowed = []
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ use syn::{
|
||||||
};
|
};
|
||||||
|
|
||||||
pub(crate) fn parse_parenthesized_attribute<K, T>(
|
pub(crate) fn parse_parenthesized_attribute<K, T>(
|
||||||
input: ParseStream,
|
input: ParseStream<'_>,
|
||||||
out: &mut Option<(K, T)>,
|
out: &mut Option<(K, T)>,
|
||||||
) -> syn::Result<()>
|
) -> syn::Result<()>
|
||||||
where
|
where
|
||||||
|
@ -30,7 +30,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn parse_assignment_attribute<K, T>(
|
pub(crate) fn parse_assignment_attribute<K, T>(
|
||||||
input: ParseStream,
|
input: ParseStream<'_>,
|
||||||
out: &mut Option<(K, T)>,
|
out: &mut Option<(K, T)>,
|
||||||
) -> syn::Result<()>
|
) -> syn::Result<()>
|
||||||
where
|
where
|
||||||
|
|
|
@ -16,7 +16,7 @@ pub(crate) fn expand(_attr: Attrs, mut item_fn: ItemFn) -> TokenStream {
|
||||||
pub(crate) struct Attrs;
|
pub(crate) struct Attrs;
|
||||||
|
|
||||||
impl Parse for Attrs {
|
impl Parse for Attrs {
|
||||||
fn parse(_input: syn::parse::ParseStream) -> syn::Result<Self> {
|
fn parse(_input: syn::parse::ParseStream<'_>) -> syn::Result<Self> {
|
||||||
Ok(Self)
|
Ok(Self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,7 +122,7 @@ pub(crate) struct Attrs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for Attrs {
|
impl Parse for Attrs {
|
||||||
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
|
fn parse(input: syn::parse::ParseStream<'_>) -> syn::Result<Self> {
|
||||||
let mut state_ty = None;
|
let mut state_ty = None;
|
||||||
|
|
||||||
while !input.is_empty() {
|
while !input.is_empty() {
|
||||||
|
|
|
@ -73,7 +73,7 @@ pub(super) struct FieldAttrs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for FieldAttrs {
|
impl Parse for FieldAttrs {
|
||||||
fn parse(input: ParseStream) -> syn::Result<Self> {
|
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
|
||||||
let mut skip = None;
|
let mut skip = None;
|
||||||
|
|
||||||
while !input.is_empty() {
|
while !input.is_empty() {
|
||||||
|
|
|
@ -18,7 +18,7 @@ pub(super) struct FromRequestContainerAttrs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for FromRequestContainerAttrs {
|
impl Parse for FromRequestContainerAttrs {
|
||||||
fn parse(input: ParseStream) -> syn::Result<Self> {
|
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
|
||||||
let mut via = None;
|
let mut via = None;
|
||||||
let mut rejection = None;
|
let mut rejection = None;
|
||||||
let mut state = None;
|
let mut state = None;
|
||||||
|
@ -66,7 +66,7 @@ pub(super) struct FromRequestFieldAttrs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for FromRequestFieldAttrs {
|
impl Parse for FromRequestFieldAttrs {
|
||||||
fn parse(input: ParseStream) -> syn::Result<Self> {
|
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
|
||||||
let mut via = None;
|
let mut via = None;
|
||||||
|
|
||||||
while !input.is_empty() {
|
while !input.is_empty() {
|
||||||
|
|
|
@ -2,43 +2,6 @@
|
||||||
//!
|
//!
|
||||||
//! [`axum`]: https://crates.io/crates/axum
|
//! [`axum`]: https://crates.io/crates/axum
|
||||||
|
|
||||||
#![warn(
|
|
||||||
clippy::all,
|
|
||||||
clippy::dbg_macro,
|
|
||||||
clippy::todo,
|
|
||||||
clippy::empty_enum,
|
|
||||||
clippy::enum_glob_use,
|
|
||||||
clippy::mem_forget,
|
|
||||||
clippy::unused_self,
|
|
||||||
clippy::filter_map_next,
|
|
||||||
clippy::needless_continue,
|
|
||||||
clippy::needless_borrow,
|
|
||||||
clippy::match_wildcard_for_single_variants,
|
|
||||||
clippy::if_let_mutex,
|
|
||||||
clippy::await_holding_lock,
|
|
||||||
clippy::match_on_vec_items,
|
|
||||||
clippy::imprecise_flops,
|
|
||||||
clippy::suboptimal_flops,
|
|
||||||
clippy::lossy_float_literal,
|
|
||||||
clippy::rest_pat_in_fully_bound_structs,
|
|
||||||
clippy::fn_params_excessive_bools,
|
|
||||||
clippy::exit,
|
|
||||||
clippy::inefficient_to_string,
|
|
||||||
clippy::linkedlist,
|
|
||||||
clippy::macro_use_imports,
|
|
||||||
clippy::option_option,
|
|
||||||
clippy::verbose_file_reads,
|
|
||||||
clippy::unnested_or_patterns,
|
|
||||||
clippy::str_to_string,
|
|
||||||
rust_2018_idioms,
|
|
||||||
future_incompatible,
|
|
||||||
nonstandard_style,
|
|
||||||
missing_debug_implementations,
|
|
||||||
missing_docs
|
|
||||||
)]
|
|
||||||
#![deny(unreachable_pub)]
|
|
||||||
#![allow(elided_lifetimes_in_paths, clippy::type_complexity)]
|
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(docsrs, feature(doc_cfg))]
|
#![cfg_attr(docsrs, feature(doc_cfg))]
|
||||||
#![cfg_attr(test, allow(clippy::float_cmp))]
|
#![cfg_attr(test, allow(clippy::float_cmp))]
|
||||||
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
||||||
|
|
|
@ -55,7 +55,7 @@ struct Attrs {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Parse for Attrs {
|
impl Parse for Attrs {
|
||||||
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
|
fn parse(input: syn::parse::ParseStream<'_>) -> syn::Result<Self> {
|
||||||
let mut path = None;
|
let mut path = None;
|
||||||
let mut rejection = None;
|
let mut rejection = None;
|
||||||
|
|
||||||
|
|
|
@ -131,9 +131,6 @@ tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["json"] }
|
tracing-subscriber = { version = "0.3", features = ["json"] }
|
||||||
uuid = { version = "1.0", features = ["serde", "v4"] }
|
uuid = { version = "1.0", features = ["serde", "v4"] }
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
|
||||||
all-features = true
|
|
||||||
|
|
||||||
[dev-dependencies.tower]
|
[dev-dependencies.tower]
|
||||||
package = "tower"
|
package = "tower"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
|
@ -180,6 +177,12 @@ features = [
|
||||||
"validate-request",
|
"validate-request",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
workspace = true
|
||||||
|
|
||||||
|
[package.metadata.docs.rs]
|
||||||
|
all-features = true
|
||||||
|
|
||||||
[package.metadata.playground]
|
[package.metadata.playground]
|
||||||
features = [
|
features = [
|
||||||
"http1",
|
"http1",
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(missing_docs)]
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::State,
|
extract::State,
|
||||||
routing::{get, post},
|
routing::{get, post},
|
||||||
|
|
|
@ -74,7 +74,7 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, U, E> fmt::Debug for BoxCloneService<T, U, E> {
|
impl<T, U, E> fmt::Debug for BoxCloneService<T, U, E> {
|
||||||
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
fmt.debug_struct("BoxCloneService").finish()
|
fmt.debug_struct("BoxCloneService").finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -420,42 +420,6 @@
|
||||||
//! [`axum-core`]: http://crates.io/crates/axum-core
|
//! [`axum-core`]: http://crates.io/crates/axum-core
|
||||||
//! [`State`]: crate::extract::State
|
//! [`State`]: crate::extract::State
|
||||||
|
|
||||||
#![warn(
|
|
||||||
clippy::all,
|
|
||||||
clippy::todo,
|
|
||||||
clippy::empty_enum,
|
|
||||||
clippy::enum_glob_use,
|
|
||||||
clippy::mem_forget,
|
|
||||||
clippy::unused_self,
|
|
||||||
clippy::filter_map_next,
|
|
||||||
clippy::needless_continue,
|
|
||||||
clippy::needless_borrow,
|
|
||||||
clippy::match_wildcard_for_single_variants,
|
|
||||||
clippy::if_let_mutex,
|
|
||||||
clippy::await_holding_lock,
|
|
||||||
clippy::match_on_vec_items,
|
|
||||||
clippy::imprecise_flops,
|
|
||||||
clippy::suboptimal_flops,
|
|
||||||
clippy::lossy_float_literal,
|
|
||||||
clippy::rest_pat_in_fully_bound_structs,
|
|
||||||
clippy::fn_params_excessive_bools,
|
|
||||||
clippy::exit,
|
|
||||||
clippy::inefficient_to_string,
|
|
||||||
clippy::linkedlist,
|
|
||||||
clippy::macro_use_imports,
|
|
||||||
clippy::option_option,
|
|
||||||
clippy::verbose_file_reads,
|
|
||||||
clippy::unnested_or_patterns,
|
|
||||||
clippy::str_to_string,
|
|
||||||
rust_2018_idioms,
|
|
||||||
future_incompatible,
|
|
||||||
nonstandard_style,
|
|
||||||
missing_debug_implementations,
|
|
||||||
missing_docs
|
|
||||||
)]
|
|
||||||
#![deny(unreachable_pub)]
|
|
||||||
#![allow(elided_lifetimes_in_paths, clippy::type_complexity)]
|
|
||||||
#![forbid(unsafe_code)]
|
|
||||||
#![cfg_attr(docsrs, feature(doc_auto_cfg, doc_cfg))]
|
#![cfg_attr(docsrs, feature(doc_auto_cfg, doc_cfg))]
|
||||||
#![cfg_attr(test, allow(clippy::float_cmp))]
|
#![cfg_attr(test, allow(clippy::float_cmp))]
|
||||||
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
#![cfg_attr(not(test), warn(clippy::print_stdout, clippy::dbg_macro))]
|
||||||
|
|
|
@ -981,7 +981,7 @@ async fn logging_rejections() {
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
dbg!(events),
|
events,
|
||||||
Vec::from([
|
Vec::from([
|
||||||
TracingEvent {
|
TracingEvent {
|
||||||
fields: RejectionEvent {
|
fields: RejectionEvent {
|
||||||
|
|
|
@ -9,7 +9,7 @@ pub(crate) enum UrlParams {
|
||||||
InvalidUtf8InPathParam { key: Arc<str> },
|
InvalidUtf8InPathParam { key: Arc<str> },
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn insert_url_params(extensions: &mut Extensions, params: Params) {
|
pub(super) fn insert_url_params(extensions: &mut Extensions, params: Params<'_, '_>) {
|
||||||
let current_params = extensions.get_mut();
|
let current_params = extensions.get_mut();
|
||||||
|
|
||||||
if let Some(UrlParams::InvalidUtf8InPathParam { .. }) = current_params {
|
if let Some(UrlParams::InvalidUtf8InPathParam { .. }) = current_params {
|
||||||
|
|
Loading…
Reference in a new issue