bug(ci): some warnings are not enforced by `features` step
I maintainer di solito rispondono entro 1 giorno
@cratelyn ci sta già lavorando.
Dal 13/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
in https://github.com/hyperium/hyper/pull/4231, we noticed that the features step in the CI pipeline did not properly catch some warnings when running cargo hack against various feature combinations.
i tracked that down to a root cause of discrepancy between what warnings we enforce when running cargo test --features full, here:
Also since they can just be dropped immediately without triggering a warning, do
{}_span!macros not have#[must_use]?i was really curious about this as well. i think i figured this out:
first, i confirmed that
Enteredis marked with this attribute: https://docs.rs/tracing/0.1.44/src/tracing/span.rs.html#387and i was also able to confirm that a warning appears when building the errant commit
b236593bwith a nightly toolchain, with the tracing feature active.moreover, i even found that these did generate warnings in CI, here: https://github.com/hyperium/hyper/actions/runs/38023510701/job/114129390066#step:7:217
however, note the specific warnings we deny when running
cargo hack, here:- name: check --feature-powerset with tracing feature run: cargo hack --no-dev-deps check --feature-powerset --depth 2 --features tracing --skip ffi env: RUSTFLAGS: "--cfg hyper_unstable_tracing -D dead_code -D unused_imports"...as compared to the compiler warning:
warning: unused `EnteredSpan` that must be used --> src/proto/h1/role.rs:86:5 | 86 | trace_span!("parse_headers"); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: once a span has been entered, it should be exited = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default help: use `let _ = ...` to ignore the resulting value | 86 | let _ = trace_span!("parse_headers");; | +++++++ +we are only denying
dead\_codeandunused\_imports, and this is a separate linting rule.we don't enforce warnings as strictly when running
cargo hack, because we only deny warnings in tests here:// src/lib.rs #![cfg_attr(all(test, feature = "full"), deny(unreachable_pub))] #![cfg_attr(all(test, feature = "full"), deny(warnings))] #![cfg_attr(all(test, feature = "nightly"), feature(test))]https://github.com/cratelyn/hyper/blob/b236593b60195dd25b53fefbb6b3f47b422b2db9/src/lib.rs#L4-L6
i think we can fix this easily, but i wanted to write this up here to (a) explain in-band why we didn't see a CI failure previously, and (b) act as a comment i can spin out into a separate issue.
thank you again for your thoughtful review, @/dswij, i appreciate it very much.
we should bring these into alignment. it can be somewhat abrasive to develop code in a feature that always enforces warnings however, so it would be nice to keep this blanket enforcement of all warnings cordoned off to specific builds in CI, as opposed promoting that to an unpredicated #![deny(warnings)].
- Lingua principale
- Rust
- Stelle
- 16.4k
- Fork
- 1.8k
- Merge medio
- 2g 9h
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di hyperium/hyper
-
C-feature
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
hyperium/hyper#2652 · 4 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Write a HIP for `Body::poll_progress()`Forse già presa @cratelyn l’ha presa 8 giorni fa. ApertaA-body B-rfc C-feature
hyperium/hyper#4228 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Upgraded HTTP/2 CONNECT streams cannot be reset, so a failed tunnel looks like a clean closeForse già presa @jeremyjpj0916 l’ha presa 17 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
Allow connection pools to stop reusing an HTTP/2 connection before its keep-alive timeoutForse già presa @jiahaoliang l’ha presa 35 giorni fa. ApertaC-feature
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
hyperium/hyper#4186 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
HTTP/1 client connection is never closed or pooled when a response completes while the request body is still unsent ((Reading::KeepAlive, Writing::Body) is a terminal state)Forse di nuovo libera @BlackRabbitCoder l’ha presa 31 giorni fa e non c’è nessuna pull request aperta. ApertaC-bug
hyperium/hyper#4176 · 6 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di hyperium/hyper
Issue simili
-
documentation good first issue
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
sujithputta02/Esapay#13 ·
-
needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
topgrade-rs/topgrade#2419 ·
I maintainer di solito rispondono entro 1 giorno
-
review-bot
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
midagedev/bloomery#318 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/infra good first issue type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
cristim/AztecCraft#92 ·
I maintainer di solito rispondono entro 1 giorno
-
Standalone Unix updater reports success when curl fails (`curl | sh` masks the exit status); Windows path is unaffectedForse già presa @akhil9tiet l’ha presa oggi. Apertabug CLI windows-os
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
openai/codex#54465 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno