Skip to content

support at-least-one groups of features (nested ideally) #42

@rbtcollins

Description

@rbtcollins

In rustup we have two HTTP backends (curl and reqwest). These are both features, and both can be disabled, but at least one must be enabled.

Similarly, for reqwest we have two features selecting the TLS cert stack to use, and again at least one must be enabled.

We enable sensible defaults via the default-features mechanism.

So we have the following feature sets that are valid:
["curl-backend"]
["reqwest-backend", "reqwest-default-tls"]
["curl-backend", "reqwest-backend", "reqwest-default-tls"]
["reqwest-backend", "reqwest-rustls-tls"]
["curl-backend", "reqwest-backend", "reqwest-rustls-tls"]
["reqwest-backend", "reqwest-default-tls", "reqwest-default-tls"]
["curl-backend", "reqwest-backend", "reqwest-default-tls", "reqwest-default-tls"]

I'd love to be able to express this to cargo-all-features somehow. Right now I've just forced it to always have reqwest-backend and reqwest-rustls-tls on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions