Rust Releases: HTTP PROXY

cargo-msrv depends on the rust-releases crate to determine which Rust versions exist. This is a necessary evil for the cargo msrv find and cargo msrv verify subcommands.

To fetch an index of known Rust releases, it accesses the network. By default, the Rust GitHub repository is used to determine which stable releases and toolchains are available. As an alternative, this data can also be fetched from the Rust AWS S3 distribution bucket.

The source can be set with the --release-source <source> flag. The possible values are respectively rust-changelog and rust-dist, for the Rust GitHub repository and the Rust AWS S3 distribution bucket. For example: cargo msrv find --release-source rust-changelog.

Release source: rust-changelog

rust-releases uses ureq as HTTP client for the rust-changelog source. From cargo-msrv 0.17.1 (and rust-releases 0.29.0 respectively), ureq has been configured to support configuring a network proxy from the environment.

The environment variable, ureq uses are:

  • ALL_PROXY or all_proxy or,
  • HTTPS_PROXY or https_proxy or,
  • HTTP_PROXY or http_proxy

The environment variable can be configured as follows:

<protocol>://<user>:<password>@<host>:port, where all parts except host are optional.

The <protocol> must be one of: http (socks4, socks4a and socks5 are currently not enabled). The default is http.

The default <port> is 80 when the <protocol> is http .

Examples:

  • localhost
  • http://127.0.0.1:8080

Release source: rust-dist

TODO: Not configured specifically by cargo-msrv, but could be the case.

The following crates are used for the rust-dist source:

Probably also relevant as transitive dependencies are: