enable clippy for tower-http and fix current issues#407
Conversation
|
Not sure why CI isn't running. I'll try closing and re-opening. |
jplatte
left a comment
There was a problem hiding this comment.
Changes look good to me, but I want to also wait for David's opinion of including Clippy in CI.
| "tower-http", | ||
| "examples/*", | ||
| ] | ||
| resolver = "2" No newline at end of file |
There was a problem hiding this comment.
Missing final newline. Also an unrelated change, so may be worth a separate commit (though I think David always squash-merges anyways..)
There was a problem hiding this comment.
this PR should be rebased
at least because resolver = "2" has been added to Cargo.toml meanwhile
so it would be easier to review for David when he will come here...
Probably, but the bigger issue is first to ensure maintainers want to merge this in to begin with
if he comes here, indeed
|
this PR should be rebased |
Probably, but the bigger issue is first to ensure maintainers want to merge this in to begin with. |
There was a problem hiding this comment.
The removal of dbg! and some &s as well as using a nested or pattern in a match arm and switching the allow()ed clippy lint name where a previous lint was deprecated/replaced are all things I consider uncontroversial enough to merge. If you want to split the PR in two, I'm happy to merge that part.
| nonstandard_style, | ||
| missing_docs | ||
| )] | ||
| #![deny(unreachable_pub, private_in_public)] |
There was a problem hiding this comment.
I think this lint got replaced by smaller individual lints? Probably worth enabling those / some of them.
| clippy::todo, | ||
| clippy::empty_enum, | ||
| clippy::enum_glob_use, | ||
| clippy::pub_enum_variant_names, |
|
Took another look, happy to merge once feedback that has been posted so far (excl. splitting the PR) is adressed. David hasn't been active in quite a while. |
|
Hey @GlenDC, do you plan to get back to this at all? |
|
Freshening this up with a rebase and making sure we can get |
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tower-http](https://github.com/tower-rs/tower-http) | workspace.dependencies | patch | `0.6.8` → `0.6.9` | --- ### Release Notes <details> <summary>tower-rs/tower-http (tower-http)</summary> ### [`v0.6.9`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.9) [Compare Source](tower-rs/tower-http@tower-http-0.6.8...tower-http-0.6.9) #### Added: - `on-early-drop`: middleware that detects when a response future or response body is dropped before completion ([#​636]) Two events get hooks: the response future being dropped before the inner service produces a response, and the response body being dropped before reaching end-of-stream. Install custom callbacks with `OnEarlyDropLayer::builder()`: ```rust use http::Request; use tower_http::on_early_drop::{OnBodyDropFn, OnEarlyDropLayer}; let layer = OnEarlyDropLayer::builder() .on_future_drop(|req: &Request<()>| { let uri = req.uri().clone(); move || eprintln!("future dropped for {}", uri) }) .on_body_drop(OnBodyDropFn::new(|req: &Request<()>| { let uri = req.uri().clone(); move |parts: &http::response::Parts| { let status = parts.status; move || eprintln!("body dropped for {} status {}", uri, status) } })); ``` Or route both events through a `trace::OnFailure` hook with `EarlyDropsAsFailures`. Place this layer inside a `TraceLayer` so the emitted events inherit the request span: ```rust use tower::ServiceBuilder; use tower_http::on_early_drop::{OnEarlyDropLayer, EarlyDropsAsFailures}; use tower_http::trace::{DefaultOnFailure, TraceLayer}; let stack = ServiceBuilder::new() .layer(TraceLayer::new_for_http()) .layer(OnEarlyDropLayer::new( EarlyDropsAsFailures::new(DefaultOnFailure::default()), )); ``` - `fs`: make `AsyncReadBody::with_capacity` public ([#​415]) #### Changed: - The implicit `async-compression` feature is removed ([#​642]) - The implicit `tokio` feature is removed ([#​628]) - `fs`: no longer auto-enables the `tracing` crate feature; enable `tracing` explicitly to restore error logging on `ServeDir` IO failures ([#​614]) #### Fixed - `trace`: restore failure classification at end-of-stream ([#​483]) - `follow-redirect`: support unicode URLs (swaps `iri-string` dep for `url`) ([#​646]) - `fs`: reject reserved Windows DOS device names (`CON`, `COM1`, etc.) in `ServeDir` ([#​663]) [#​415]: tower-rs/tower-http#415 [#​483]: tower-rs/tower-http#483 [#​614]: tower-rs/tower-http#614 [#​628]: tower-rs/tower-http#628 [#​636]: tower-rs/tower-http#636 [#​642]: tower-rs/tower-http#642 [#​646]: tower-rs/tower-http#646 [#​663]: tower-rs/tower-http#663 #### All the PRs - ci: update deny action to v2 by [@​seanmonstar](https://github.com/seanmonstar) in [#​627](tower-rs/tower-http#627) - chore: improve code comments clarity by [@​xibeiyoumian](https://github.com/xibeiyoumian) in [#​626](tower-rs/tower-http#626) - ci: Update to actions/checkout v6 by [@​tottoto](https://github.com/tottoto) in [#​629](tower-rs/tower-http#629) - ci: msrv resolver by [@​seanmonstar](https://github.com/seanmonstar) in [#​635](tower-rs/tower-http#635) - chore: Remove resolved cargo-deny config by [@​tottoto](https://github.com/tottoto) in [#​631](tower-rs/tower-http#631) - ci: Update to cargo-check-external-types 0.4.0 by [@​tottoto](https://github.com/tottoto) in [#​633](tower-rs/tower-http#633) - examples: Use typed default value clap config by [@​tottoto](https://github.com/tottoto) in [#​634](tower-rs/tower-http#634) - examples: Disable unused reqwest feature by [@​tottoto](https://github.com/tottoto) in [#​632](tower-rs/tower-http#632) - examples: Update to reqwest 0.13 by [@​tottoto](https://github.com/tottoto) in [#​640](tower-rs/tower-http#640) - Fix clippy warnings in warp-key-value-store example by [@​jplatte](https://github.com/jplatte) in [#​637](tower-rs/tower-http#637) - ci: Use Swatinem/rust-cache\@​v2 to cache by [@​tottoto](https://github.com/tottoto) in [#​644](tower-rs/tower-http#644) - ci: Remove unused working-directory config by [@​tottoto](https://github.com/tottoto) in [#​645](tower-rs/tower-http#645) - Use cargo-deny graph config by [@​tottoto](https://github.com/tottoto) in [#​639](tower-rs/tower-http#639) - Fix: follow redirect unicode in [#​646](tower-rs/tower-http#646) - doc: remove mention of deprecated bearer method in lib.rs comment by [@​VojtaStanek](https://github.com/VojtaStanek) in [#​641](tower-rs/tower-http#641) - Allow Unicode-3.0 license by [@​tottoto](https://github.com/tottoto) in [#​648](tower-rs/tower-http#648) - fix(docs): typo by [@​carlocorradini](https://github.com/carlocorradini) in [#​649](tower-rs/tower-http#649) - fix: remove unused GzEncoder import in decompression in [#​647](tower-rs/tower-http#647) - docs: update Example server in [#​652](tower-rs/tower-http#652) - Don't automatically enable tracing for fs feature by [@​ginnyTheCat](https://github.com/ginnyTheCat) in [#​614](tower-rs/tower-http#614) - examples: Remove unnecessary trait bound by [@​tottoto](https://github.com/tottoto) in [#​651](tower-rs/tower-http#651) - Remove implicit async-compression feature by [@​tottoto](https://github.com/tottoto) in [#​642](tower-rs/tower-http#642) - fix clippy warnings by [@​alexanderkjall](https://github.com/alexanderkjall) in [#​659](tower-rs/tower-http#659) - Check for reserved DOS names by [@​Darksonn](https://github.com/Darksonn) in [#​663](tower-rs/tower-http#663) - enable clippy for tower-http and fix current issues by [@​GlenDC](https://github.com/GlenDC) in [#​407](tower-rs/tower-http#407) - chore: remove implicit tokio feature by [@​WaterWhisperer](https://github.com/WaterWhisperer) in [#​628](tower-rs/tower-http#628) - trace: adds back call to classify\_eos on trailers by [@​markdingram](https://github.com/markdingram) in [#​483](tower-rs/tower-http#483) - Make AsyncReadBody::with\_capacity public by [@​bouk](https://github.com/bouk) in [#​415](tower-rs/tower-http#415) - examples: Use axum::body::to\_bytes by [@​tottoto](https://github.com/tottoto) in [#​650](tower-rs/tower-http#650) - ci: Remove unnecessary protoc setup by [@​tottoto](https://github.com/tottoto) in [#​665](tower-rs/tower-http#665) - feat(on-early-drop): Add middleware for client early drop detection by [@​fbergero](https://github.com/fbergero) in [#​636](tower-rs/tower-http#636) - chore: release tower-http 0.6.9 by [@​jlizen](https://github.com/jlizen) in [#​666](tower-rs/tower-http#666) #### New Contributors - [@​xibeiyoumian](https://github.com/xibeiyoumian) made their first contribution in [#​626](tower-rs/tower-http#626) - [@​VojtaStanek](https://github.com/VojtaStanek) made their first contribution in [#​641](tower-rs/tower-http#641) - [@​carlocorradini](https://github.com/carlocorradini) made their first contribution in [#​649](tower-rs/tower-http#649) - [@​ginnyTheCat](https://github.com/ginnyTheCat) made their first contribution in [#​614](tower-rs/tower-http#614) - [@​alexanderkjall](https://github.com/alexanderkjall) made their first contribution in [#​659](tower-rs/tower-http#659) - [@​Darksonn](https://github.com/Darksonn) made their first contribution in [#​663](tower-rs/tower-http#663) - [@​WaterWhisperer](https://github.com/WaterWhisperer) made their first contribution in [#​628](tower-rs/tower-http#628) - [@​bouk](https://github.com/bouk) made their first contribution in [#​415](tower-rs/tower-http#415) - [@​fbergero](https://github.com/fbergero) made their first contribution in [#​636](tower-rs/tower-http#636) - [@​jlizen](https://github.com/jlizen) made their first contribution in [#​666](tower-rs/tower-http#666) **Full Changelog**: <tower-rs/tower-http@tower-http-0.6.8...tower-http-0.6.9> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/towonel/pulls/33
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tower-http](https://github.com/tower-rs/tower-http) | workspace.dependencies | patch | `0.6.8` → `0.6.9` | --- ### Release Notes <details> <summary>tower-rs/tower-http (tower-http)</summary> ### [`v0.6.9`](https://github.com/tower-rs/tower-http/releases/tag/tower-http-0.6.9) [Compare Source](tower-rs/tower-http@tower-http-0.6.8...tower-http-0.6.9) #### Added: - `on-early-drop`: middleware that detects when a response future or response body is dropped before completion ([#​636]) Two events get hooks: the response future being dropped before the inner service produces a response, and the response body being dropped before reaching end-of-stream. Install custom callbacks with `OnEarlyDropLayer::builder()`: ```rust use http::Request; use tower_http::on_early_drop::{OnBodyDropFn, OnEarlyDropLayer}; let layer = OnEarlyDropLayer::builder() .on_future_drop(|req: &Request<()>| { let uri = req.uri().clone(); move || eprintln!("future dropped for {}", uri) }) .on_body_drop(OnBodyDropFn::new(|req: &Request<()>| { let uri = req.uri().clone(); move |parts: &http::response::Parts| { let status = parts.status; move || eprintln!("body dropped for {} status {}", uri, status) } })); ``` Or route both events through a `trace::OnFailure` hook with `EarlyDropsAsFailures`. Place this layer inside a `TraceLayer` so the emitted events inherit the request span: ```rust use tower::ServiceBuilder; use tower_http::on_early_drop::{OnEarlyDropLayer, EarlyDropsAsFailures}; use tower_http::trace::{DefaultOnFailure, TraceLayer}; let stack = ServiceBuilder::new() .layer(TraceLayer::new_for_http()) .layer(OnEarlyDropLayer::new( EarlyDropsAsFailures::new(DefaultOnFailure::default()), )); ``` - `fs`: make `AsyncReadBody::with_capacity` public ([#​415]) #### Changed: - The implicit `async-compression` feature is removed ([#​642]) - The implicit `tokio` feature is removed ([#​628]) - `fs`: no longer auto-enables the `tracing` crate feature; enable `tracing` explicitly to restore error logging on `ServeDir` IO failures ([#​614]) #### Fixed - `trace`: restore failure classification at end-of-stream ([#​483]) - `follow-redirect`: support unicode URLs (swaps `iri-string` dep for `url`) ([#​646]) - `fs`: reject reserved Windows DOS device names (`CON`, `COM1`, etc.) in `ServeDir` ([#​663]) [#​415]: tower-rs/tower-http#415 [#​483]: tower-rs/tower-http#483 [#​614]: tower-rs/tower-http#614 [#​628]: tower-rs/tower-http#628 [#​636]: tower-rs/tower-http#636 [#​642]: tower-rs/tower-http#642 [#​646]: tower-rs/tower-http#646 [#​663]: tower-rs/tower-http#663 #### All the PRs - ci: update deny action to v2 by [@​seanmonstar](https://github.com/seanmonstar) in [#​627](tower-rs/tower-http#627) - chore: improve code comments clarity by [@​xibeiyoumian](https://github.com/xibeiyoumian) in [#​626](tower-rs/tower-http#626) - ci: Update to actions/checkout v6 by [@​tottoto](https://github.com/tottoto) in [#​629](tower-rs/tower-http#629) - ci: msrv resolver by [@​seanmonstar](https://github.com/seanmonstar) in [#​635](tower-rs/tower-http#635) - chore: Remove resolved cargo-deny config by [@​tottoto](https://github.com/tottoto) in [#​631](tower-rs/tower-http#631) - ci: Update to cargo-check-external-types 0.4.0 by [@​tottoto](https://github.com/tottoto) in [#​633](tower-rs/tower-http#633) - examples: Use typed default value clap config by [@​tottoto](https://github.com/tottoto) in [#​634](tower-rs/tower-http#634) - examples: Disable unused reqwest feature by [@​tottoto](https://github.com/tottoto) in [#​632](tower-rs/tower-http#632) - examples: Update to reqwest 0.13 by [@​tottoto](https://github.com/tottoto) in [#​640](tower-rs/tower-http#640) - Fix clippy warnings in warp-key-value-store example by [@​jplatte](https://github.com/jplatte) in [#​637](tower-rs/tower-http#637) - ci: Use Swatinem/rust-cache\@​v2 to cache by [@​tottoto](https://github.com/tottoto) in [#​644](tower-rs/tower-http#644) - ci: Remove unused working-directory config by [@​tottoto](https://github.com/tottoto) in [#​645](tower-rs/tower-http#645) - Use cargo-deny graph config by [@​tottoto](https://github.com/tottoto) in [#​639](tower-rs/tower-http#639) - Fix: follow redirect unicode in [#​646](tower-rs/tower-http#646) - doc: remove mention of deprecated bearer method in lib.rs comment by [@​VojtaStanek](https://github.com/VojtaStanek) in [#​641](tower-rs/tower-http#641) - Allow Unicode-3.0 license by [@​tottoto](https://github.com/tottoto) in [#​648](tower-rs/tower-http#648) - fix(docs): typo by [@​carlocorradini](https://github.com/carlocorradini) in [#​649](tower-rs/tower-http#649) - fix: remove unused GzEncoder import in decompression in [#​647](tower-rs/tower-http#647) - docs: update Example server in [#​652](tower-rs/tower-http#652) - Don't automatically enable tracing for fs feature by [@​ginnyTheCat](https://github.com/ginnyTheCat) in [#​614](tower-rs/tower-http#614) - examples: Remove unnecessary trait bound by [@​tottoto](https://github.com/tottoto) in [#​651](tower-rs/tower-http#651) - Remove implicit async-compression feature by [@​tottoto](https://github.com/tottoto) in [#​642](tower-rs/tower-http#642) - fix clippy warnings by [@​alexanderkjall](https://github.com/alexanderkjall) in [#​659](tower-rs/tower-http#659) - Check for reserved DOS names by [@​Darksonn](https://github.com/Darksonn) in [#​663](tower-rs/tower-http#663) - enable clippy for tower-http and fix current issues by [@​GlenDC](https://github.com/GlenDC) in [#​407](tower-rs/tower-http#407) - chore: remove implicit tokio feature by [@​WaterWhisperer](https://github.com/WaterWhisperer) in [#​628](tower-rs/tower-http#628) - trace: adds back call to classify\_eos on trailers by [@​markdingram](https://github.com/markdingram) in [#​483](tower-rs/tower-http#483) - Make AsyncReadBody::with\_capacity public by [@​bouk](https://github.com/bouk) in [#​415](tower-rs/tower-http#415) - examples: Use axum::body::to\_bytes by [@​tottoto](https://github.com/tottoto) in [#​650](tower-rs/tower-http#650) - ci: Remove unnecessary protoc setup by [@​tottoto](https://github.com/tottoto) in [#​665](tower-rs/tower-http#665) - feat(on-early-drop): Add middleware for client early drop detection by [@​fbergero](https://github.com/fbergero) in [#​636](tower-rs/tower-http#636) - chore: release tower-http 0.6.9 by [@​jlizen](https://github.com/jlizen) in [#​666](tower-rs/tower-http#666) #### New Contributors - [@​xibeiyoumian](https://github.com/xibeiyoumian) made their first contribution in [#​626](tower-rs/tower-http#626) - [@​VojtaStanek](https://github.com/VojtaStanek) made their first contribution in [#​641](tower-rs/tower-http#641) - [@​carlocorradini](https://github.com/carlocorradini) made their first contribution in [#​649](tower-rs/tower-http#649) - [@​ginnyTheCat](https://github.com/ginnyTheCat) made their first contribution in [#​614](tower-rs/tower-http#614) - [@​alexanderkjall](https://github.com/alexanderkjall) made their first contribution in [#​659](tower-rs/tower-http#659) - [@​Darksonn](https://github.com/Darksonn) made their first contribution in [#​663](tower-rs/tower-http#663) - [@​WaterWhisperer](https://github.com/WaterWhisperer) made their first contribution in [#​628](tower-rs/tower-http#628) - [@​bouk](https://github.com/bouk) made their first contribution in [#​415](tower-rs/tower-http#415) - [@​fbergero](https://github.com/fbergero) made their first contribution in [#​636](tower-rs/tower-http#636) - [@​jlizen](https://github.com/jlizen) made their first contribution in [#​666](tower-rs/tower-http#666) **Full Changelog**: <tower-rs/tower-http@tower-http-0.6.8...tower-http-0.6.9> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/towonel/pulls/33
Motivation
I maintain a fork of
tower, including alsotower-httpin https://github.com/plabayo/tower-async.Only now did I notice that tower-http does not yet enable clippy.
Nothing bad was spotted by enabling it, but still,
seems by now that the Rust community agrees that enabling clippy everywhere is useful?
So as such, here my first contribution upstream.
Solution
N/A