Skip to content

Bug: disabling default-features on webpki fails builds that depend on quinn on Linux #164

@d-s-d

Description

@d-s-d

Apparently, the fact that rustls-platform-verifier disables default features on its webpki-dependency declaration causes trouble for downstream packages when building on Linux.

For example, a simple package with the following dependencies will fail to compile with the error below:

[dependencies]
quinn = "0.11.6"
# rustls-webpki = { version = "0.102", features = ["std"] }

build error:

error[E0277]: the trait bound `webpki::Error: std::error::Error` is not satisfied
   --> /<snap>/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rustls-platform-verifier-0.4.0/src/verification/others.rs:234:40
    |
234 |             other_err.0.downcast_ref::<webpki::Error>()
    |                         ------------   ^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `webpki::Error`
    |                         |
    |                         required by a bound introduced by this call
    |
note: required by a bound in `<(dyn std::error::Error + Send + Sync + 'static)>::downcast_ref`
   --> /<snap>/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/error.rs:271:28
    |
271 |     pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T> {
    |                            ^^^^^ required by this bound in `<dyn Error + Send + Sync>::downcast_ref`

Uncommenting the rustls-webpki dependency above and explicitly enabling std fixes the issue.

System and cargo version

$ cargo --version
cargo 1.85.0 (d73d2caf9 2024-12-31)

$ uname -a 
uname -a
Linux dsd-machine 6.8.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 11 15:25:05 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions