Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from hyperium:master #7

Open
wants to merge 135 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
f769e1e
Add tests for valid and invalid Method's
sbosnick Apr 10, 2020
493b38f
Refactor Method internals
sbosnick Apr 10, 2020
dc865ff
Document the invariants that make Method safe
sbosnick Apr 10, 2020
25c5674
Add tests for directly parsing a Scheme
sbosnick Apr 18, 2020
3ef1133
Add comments to describe safety of Scheme
sbosnick Apr 20, 2020
59733e1
Audit use of unsafe in uri/authority.rs (#414)
sbosnick May 14, 2020
d8996d2
Fix the "Build Status" indicator in README.md (#425)
sbosnick May 24, 2020
4f11af5
Fix the build status badge in README.md (#426)
sbosnick May 24, 2020
4115fc1
Clarify meaning of sensitive header values (#427)
pluehne Jun 1, 2020
975dbdd
Audit the use of unsafe in byte_str.rs (#408)
sbosnick Jun 24, 2020
b00473c
Return an error rather than panicking when HeaderName is too long (#433)
acfoltzer Aug 3, 2020
be05ed2
Allow StatusCode to support 600-999 range
dekellum Dec 8, 2020
8be5a58
Add String and &String convert for PathAndQuery (#450)
mkindahl Dec 8, 2020
43c6e84
Return error if multiple brackets exist in the authority (#445)
aeryz Dec 8, 2020
722df55
Fixes panic for remove_entry and remove_entry_mult (#449)
dekellum Dec 11, 2020
01d6a59
v0.2.2
dekellum Dec 15, 2020
95c338e
Upgrade to Bytes 1.0
seanmonstar Dec 23, 2020
7ba575f
v0.2.3
seanmonstar Jan 7, 2021
5b90e38
Added benchmarks for parsing Method (#464)
a1ien Jan 25, 2021
5c40eca
Allow `{`, `"` and `}` in URI paths (#474)
nox Apr 6, 2021
97c35dd
v0.2.4
seanmonstar Apr 7, 2021
f42f706
Initial fuzzer set up. (#478)
DavidKorczynski Apr 10, 2021
fc49fe3
Add TryFrom implementations for owned types for HeaderName (#479)
sagebind Apr 16, 2021
73c723e
Add missing TryFrom<String> and TryFrom<Vec<u8>> impls. (#477)
Arnavion Apr 21, 2021
1179d6f
Fix typo in docs (#482)
walfie Apr 28, 2021
e54da71
HeaderValue::from_static can be const (#481)
jeromegn Jun 9, 2021
58c6290
Minor changes to var names in examples (#493)
dschuyler Jul 30, 2021
d2fda20
request: add Builder::version_ref to query the version in use (#495)
mathstuf Aug 10, 2021
cc2f3ed
extensions: add methods to detect the presence of extensions (#497)
mathstuf Aug 10, 2021
ead020c
v0.2.5
seanmonstar Sep 21, 2021
52b4d04
README: Remove obsolete `extern crate http` instructions
Turbo87 Nov 11, 2021
1129163
remove obsolete comment
tshepang Jul 23, 2021
f25fbb5
Cargo: Add `rust-version` field
Turbo87 Nov 11, 2021
abe6512
deps: Update to itoa 1.
waywardmonkeys Dec 14, 2021
c28945c
v0.2.6
seanmonstar Dec 30, 2021
ec616ed
Add test coverage for the StatusCode is_xxxxx() functions (#545)
ivd-git Apr 15, 2022
d8b35db
Make HeaderName::from_static const (#499)
jeddenlea Apr 16, 2022
4fb67bc
Use SPDX license format (#547)
atouchet Apr 25, 2022
f4cff03
Add Extensions::extend (#546)
jplatte Apr 26, 2022
d82aa29
readme: update some links (#548)
atouchet Apr 26, 2022
bd30ce0
style: fix typo in code comment (#532)
graves501 Apr 26, 2022
c1f309e
From impls of PathAndQuery and Authority for Uri (#538)
jeddenlea Apr 28, 2022
95ad79b
v0.2.7
seanmonstar Apr 28, 2022
9f68ed7
Update changelog to include msrv (#550)
LucioFranco May 4, 2022
fecfdfb
Fix `doc(hidden)` errors. (#553)
nnethercote May 19, 2022
5b2719a
Convert header::name to use MaybeUninit (#555)
seanmonstar Jun 6, 2022
d46b71e
v0.2.8
seanmonstar Jun 6, 2022
98b1873
chore: Pin indexmap to `<=1.8` for ci (#560)
LucioFranco Jun 22, 2022
34a9d6b
update: export HeaderName from crate root
Velfi Jun 30, 2022
34dc1cc
chore: Fix MSRV CI test (#579)
LucioFranco Dec 5, 2022
f0ba97f
implement `Hash` for `PathAndQuery` (#582)
Jan 19, 2023
1fad3ea
feat: add cache-status and cdn-cache-control header name constants (#…
acfoltzer Feb 17, 2023
24bbec2
v0.2.9
seanmonstar Feb 17, 2023
dd4c15c
chore: Replace unmaintained/outdated GitHub Actions
nickelc Apr 12, 2023
3a2f3e0
chore: Use Cargo metadata for the MSRV build job
nickelc Apr 12, 2023
7b3c506
chore: fix lint about dropping Copy values
seanmonstar May 15, 2023
20633e5
docs: remove references to defunct `build` method
IsaacCloos May 19, 2023
746fce8
ci: only check msrv, not test
seanmonstar Jun 12, 2023
4756547
When parsing Uri authority, check that the square brackets are in the…
Jun 8, 2023
4f28cbd
early reject URI authority if too many ":" chars
Jun 9, 2023
78e3d37
make miri happy
discord9 Jul 13, 2023
1a04e71
docs: fix some spelling mistakes (#630)
mxsm Sep 24, 2023
25c1803
chore: fix typos (#633)
xiaolou86 Nov 6, 2023
b41d0b9
Resolve arith overflow on with_capacity (#628)
HeeillWang Nov 10, 2023
818269d
v0.2.10
seanmonstar Nov 10, 2023
aa1af37
start 1.0
seanmonstar Nov 10, 2023
f5f31f0
feat: implement Clone for Request, Response, Extensions (#634)
seanmonstar Nov 10, 2023
0a9c8ad
fix MIRI error in header::Iter (#642)
seanmonstar Nov 13, 2023
60c9b46
chore(ci): run miri tests
hjr3 Nov 12, 2023
e5b80c1
test: add test to ensure HeaderMap::iter safety
hjr3 Nov 12, 2023
c51f40f
feat: add default std feature
seanmonstar Nov 13, 2023
1c06623
v1.0.0
seanmonstar Nov 15, 2023
453cd1b
style(lib): add rustfmt::skip attribute to some place and apply rustf…
tottoto Nov 15, 2023
ab311c3
chore(ci): check minimal versions (#638)
tottoto Nov 15, 2023
0db5b1d
chore(ci): update to actions/checkout@v4 (#649)
tottoto Nov 15, 2023
94df783
Update version number in Readme (#650)
atouchet Nov 16, 2023
eb6e595
docs: typo: 'an multimap' -> 'a multimap' (#652)
julianbraha Nov 30, 2023
0d1f772
docs: Use HTTPS links where possible (#654)
LukeMathWalker Dec 7, 2023
eff3e3a
Add get_or_insert methods to Extensions (#656)
sfackler Dec 11, 2023
2c6dfdd
ci: use a single ci-pass job that depends on the rest (#657)
seanmonstar Dec 11, 2023
cdfb0b6
ci: add a semver check (#658)
seanmonstar Dec 12, 2023
bda9320
docs: fix typo in Response documentation (#660)
mattgathu Dec 24, 2023
9098a29
Override some provided `Iterator` methods for header map's `Keys` (#667)
LukasKalbertodt Jan 29, 2024
f446500
feat: implement from uri for builder
tottoto Jan 31, 2024
aed8be3
chore: remove unused `Sealed`
dswij Feb 14, 2024
fd2ad94
chore: update to quickcheck 1
tottoto Feb 15, 2024
dac3dd9
chore(dependencies): remove unused indexmap and seahash crate
tottoto Feb 16, 2024
fb90063
refactor(lib): move request and response trait bound assertion to test
tottoto Feb 16, 2024
47db675
refactor(lib): remove redundant field name
tottoto Feb 16, 2024
7b0c2b7
refactor(lib): refactor conditional expression
tottoto Feb 16, 2024
b643ecf
refactor(lib): remove redundant reference
tottoto Feb 16, 2024
88c6281
refactor(uri): use more idiomatic api
tottoto Feb 16, 2024
573c528
refactor(header): remove redundant type conversion
tottoto Feb 16, 2024
895ead6
refactor(header): remove redundant slicing
tottoto Feb 16, 2024
74f38d8
refactor(uri): replace single string with character
tottoto Feb 16, 2024
0f5e55c
refactor(lib): refactor redundant closure
tottoto Feb 16, 2024
1ae60bf
refactor(lib): remove unused lifetime parameter
tottoto Feb 16, 2024
ad6a186
refactor(header): remove manual deref
tottoto Feb 16, 2024
3311a1a
refactor(header): resolve non-canonical PartialOrd implementation
tottoto Feb 16, 2024
77af842
chore(header): make HeaderValue Hash implementation consistent with Eq
tottoto Feb 16, 2024
4b73f6a
refactor(lib): use to_owned to clarify the purpose
tottoto Feb 16, 2024
79f8da5
refactor(header): ownership is not needed to iterate
tottoto Feb 16, 2024
fe1932d
refactor(status): remove redundant static lifetime
tottoto Feb 16, 2024
b8ddea7
refactor(header): add comment and lint allowing to panic in const con…
tottoto Feb 16, 2024
63e7d63
doc(header): add panics and safety section to document
tottoto Feb 16, 2024
4785cdd
refactor(header): rename method to follow naming convention
tottoto Feb 16, 2024
c03cc8b
chore(header): allow clippy::should_implement_trait rule for HeaderVa…
tottoto Feb 16, 2024
63102bc
chore(lib): remove importing prelude AsRef trait
tottoto Feb 19, 2024
caa8b4f
feat: add `HeaderMap::try_` methods to handle capacity overflow
glebpom Mar 1, 2024
96dc52f
fix: HeaderName::from_lowercase allowing NUL bytes in some cases
seanmonstar Mar 4, 2024
3fe7267
v1.1.0
seanmonstar Mar 4, 2024
ec95511
lib.rs intra-doc links
lgmsantos Jun 15, 2022
c88f839
Update StatusCode documentation to RFC 9110 (#690)
Pi-Cla Mar 20, 2024
3f0b7de
refactor(lib): replace deprecated numeric api with primitive one
tottoto May 4, 2024
7fca4d9
refactor(header): refactor redundant closure style
tottoto May 4, 2024
c97f7dd
refactor(header): remove redundant result handling
tottoto May 4, 2024
0636a42
refactor(header): remove multiple bound location
tottoto May 4, 2024
f4e8c0c
refactor(header): allow clippy::out_of_bounds_indexing to panic in co…
tottoto May 4, 2024
af5df31
fix: Allow characters `#`, `$`, `%`, `&`, `'` in ` Method` (#713)
franfastly Aug 7, 2024
de89c5a
docs: Correct documentation for the last-modified http header. (#714)
wyatt-herkamp Aug 8, 2024
308104b
fix: Remove double quote from header name validation as per spec (#716)
chen-hongzhi Sep 17, 2024
761d36a
docs: fix typos (#718)
39zde Oct 14, 2024
0136ae7
docs: fix docs failing to compile (#722)
gretchenfrage Oct 28, 2024
7faad85
docs: remove text stating http is early in lifecycle (#724)
alistaircarscadden Nov 20, 2024
75298bd
feat: add StatusCode::TOO_EARLY 425 (#725)
cemoktra Nov 20, 2024
300f91d
Generalize HeaderMap's TryFrom impl from HashMap, to allow other hash…
Qqwy Nov 26, 2024
5a1a5e8
feat: change to TryInto bounds for Builder Methods (#730)
SmolPatches Nov 28, 2024
92d4148
fix: off by 1 error in Method::from_bytes causing an allocation (#708)
dlzht Dec 3, 2024
a753ce4
fix: capacity handling in HeaderMap::try_with_capacity (#710)
dlzht Dec 3, 2024
2c8db78
docs: improve documentation for the `Extensions::insert` method (#705)
asudox Dec 3, 2024
072fd8a
feat: make `StatusCode::as_u16` a const fn (#680)
WhyNotHugo Dec 3, 2024
a912445
v1.2.0
seanmonstar Dec 3, 2024
091ee9a
feat(uri): allow utf8 char, not rfc 3986 compliant, in path and query…
joelwurtz Dec 20, 2024
4e02046
refactor(header): remove BytesMut inline optimization when creating (…
ADD-SP Dec 27, 2024
68845bd
fix: HeaderMap::reserve allocates insufficient capacity (#741)
kawaemon Jan 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 88 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,33 @@ env:
RUST_BACKTRACE: 1

jobs:
ci-pass:
name: CI is green
runs-on: ubuntu-latest
needs:
- style
- test
- msrv
- wasm
- minimal-versions
- miri
- semver
steps:
- run: exit 0

style:
name: Check Style
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt

- run: cargo fmt --all --check

test:
name: Test ${{ matrix.rust }}
Expand All @@ -19,7 +46,6 @@ jobs:
- stable
- beta
- nightly
- 1.39.0

include:
- rust: nightly
Expand All @@ -29,26 +55,40 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v4

- name: Install Rust (${{ matrix.rust }})
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@master
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true

- name: Test
uses: actions-rs/cargo@v1
with:
command: test
run: cargo test

- name: Test all benches
if: matrix.benches
uses: actions-rs/cargo@v1
run: cargo test --benches ${{ matrix.features }}

msrv:
name: Check MSRV
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Get MSRV from package metadata
id: metadata
run: |
cargo metadata --no-deps --format-version 1 |
jq -r '"msrv=" + (.packages[] | select(.name == "http")).rust_version' >> $GITHUB_OUTPUT

- name: Install Rust (${{ steps.metadata.outputs.msrv }})
uses: dtolnay/rust-toolchain@master
with:
command: test
args: --benches ${{ matrix.features }}
toolchain: ${{ steps.metadata.outputs.msrv }}

- name: Test
run: cargo check -p http

wasm:
name: WASM
Expand All @@ -58,20 +98,48 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v4

- name: Install Rust
uses: actions-rs/toolchain@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
target: wasm32-unknown-unknown
override: true
targets: wasm32-unknown-unknown

- name: Check
uses: actions-rs/cargo@v1
run: cargo check --target wasm32-unknown-unknown

minimal-versions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@cargo-minimal-versions
- run: cargo minimal-versions check

miri:
name: Miri
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@nightly
with:
command: check
args: --target wasm32-unknown-unknown
components: miri

- name: Test
run: MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-ignore-leaks" cargo miri test

semver:
name: semver
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2
with:
release-type: minor
93 changes: 92 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,80 @@
# 1.2.0 (December 3, 2024)

* Add `StatusCode::TOO_EARLY` constant for 425 status.
* Loosen `TryFrom<HashMap>` for `HeaderMap` to work with any state generic.
* Change `Builder` methods to use `TryInto` instead of `TryFrom` arguments.
* Make `StatusCode::as_u16` a `const` function.
* Fix `Method` parsing to allow `#$%&'` characters.
* Fix `HeaderName` parsing to reject `"` characters.
* Fix off by 1 error in `Method::from_bytes` that could cause extra allocations.

# 1.1.0 (March 4, 2024)

* Add methods to allow trying to allocate in the `HeaderMap`, returning an error if oversize instead of panicking.
* Add `Extensions::get_or_insert()` method.
* Implement `From<Uri>` for `uri::Builder`.
* Fix `HeaderName::from_lowercase` that could allow NUL bytes in some cases.

# 1.0.0 (November 15, 2023)

- Implement `Clone` for `Request`, `Response`, and `Extensions`. This breaking change requires
that all extensions now implement `Clone`.
- Add a default-on `std` feature. Disabling it currently is not supported.
- Fix MIRI warnings in `HeaderMap::iter()`.

# 0.2.10 (November 10, 2023)

* Fix parsing of `Authority` to handle square brackets in incorrect order.
* Fix `HeaderMap::with_capacity()` to handle arithmetic overflow.

# 0.2.9 (February 17, 2023)

* Add `HeaderName` constants for `cache-status` and `cdn-cache-control`.
* Implement `Hash` for `PathAndQuery`.
* Re-export `HeaderName` at crate root.

# 0.2.8 (June 6, 2022)

* Fix internal usage of uninitialized memory to use `MaybeUninit` inside `HeaderName`.

# 0.2.7 (April 28, 2022)

* MSRV bumped to `1.49`.
* Add `extend()` method to `Extensions`.
* Add `From<Authority>` and `From<PathAndQuery>` impls for `Uri`.
* Make `HeaderName::from_static` a `const fn`.

# 0.2.6 (December 30, 2021)

* Upgrade internal `itoa` dependency to 1.0.

# 0.2.5 (September 21, 2021)

* Add `is_empty()` and `len()` methods to `Extensions`.
* Add `version_ref()` method to `request::Builder`.
* Implement `TryFrom<Vec<u8>>` and `TryFrom<String>` for `Authority`, `Uri`, `PathAndQuery`, and `HeaderName`.
* Make `HeaderValue::from_static` a `const fn`.

# 0.2.4 (April 4, 2021)

* Fix `Uri` parsing to allow `{`, `"`, and `}` in paths.

# 0.2.3 (January 7, 2021)

* Upgrade internal (private) `bytes` dependency to 1.0.

# 0.2.2 (December 14, 2020)

* Fix (potential double) panic of (`HeaderMap`) `OccupiedEntry::remove_entry` and
`remove_entry_mult` when multiple values are present. ([#446], [#449] dekellum)
* Safety audits of (priv) `ByteStr` and refactor of `Authority` ([#408], [#414] sbosnick)
* Fix `HeaderName` to error instead of panic when input is too long ([#432] [#433] acfoltzer)
* Allow `StatusCode` to encode values 100-999 without error. Use of the
unclassified range 600-999 remains discouraged. ([#144], [#438], [#443] quininer dekellum)
* Add `String` and `&String` fallible conversions to `PathAndQuery` ([#450] mkindahl)
* Fix `Authority` (and `Uri`) to error instead of panic on unbalanced brackets
([#435], [#445] aeryz)

# 0.2.1 (March 25, 2020)

* Add `extensions_ref` and `extensions_mut` to `request::Builder` and `response::Builder`.
Expand Down Expand Up @@ -77,7 +154,7 @@

# 0.1.10 (August 8, 2018)

* impl HttpTryFrom<String> for HeaderValue (#236)
* `impl HttpTryFrom<String>` for HeaderValue (#236)

# 0.1.9 (August 7, 2018)

Expand Down Expand Up @@ -141,3 +218,17 @@
# 0.1.0 (September 8, 2017)

* Initial release.

[#144]: https://github.com/hyperium/http/issues/144
[#408]: https://github.com/hyperium/http/pull/408
[#414]: https://github.com/hyperium/http/pull/414
[#432]: https://github.com/hyperium/http/issues/432
[#433]: https://github.com/hyperium/http/pull/433
[#438]: https://github.com/hyperium/http/pull/438
[#443]: https://github.com/hyperium/http/pull/443
[#446]: https://github.com/hyperium/http/issues/446
[#449]: https://github.com/hyperium/http/pull/449
[#450]: https://github.com/hyperium/http/pull/450
[#435]: https://github.com/hyperium/http/issues/435
[#445]: https://github.com/hyperium/http/pull/445

45 changes: 21 additions & 24 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ name = "http"
# - Update html_root_url in lib.rs.
# - Update CHANGELOG.md.
# - Create git tag
version = "0.2.1"
version = "1.2.0"
readme = "README.md"
documentation = "https://docs.rs/http"
repository = "https://github.com/hyperium/http"
license = "MIT/Apache-2.0"
license = "MIT OR Apache-2.0"
authors = [
"Alex Crichton <[email protected]>",
"Carl Lerche <[email protected]>",
Expand All @@ -20,33 +20,30 @@ A set of types for representing HTTP requests and responses.
keywords = ["http"]
categories = ["web-programming"]
edition = "2018"
# When updating this value, don't forget to also adjust the GitHub Actions config.
rust-version = "1.49.0"

[workspace]
members = [
".",
]
exclude = [
"fuzz",
"benches"
]

[features]
default = ["std"]
std = []

[dependencies]
bytes = "0.5"
bytes = "1"
fnv = "1.0.5"
itoa = "0.4.1"
itoa = "1"

[dev-dependencies]
indexmap = "1.0"
quickcheck = "0.9.0"
rand = "0.7.0"
seahash = "3.0.5"
quickcheck = "1"
rand = "0.8.0"
serde = "1.0"
serde_json = "1.0"
doc-comment = "0.3"

[[bench]]
name = "header_map"
path = "benches/header_map/mod.rs"

[[bench]]
name = "header_name"
path = "benches/header_name.rs"

[[bench]]
name = "header_value"
path = "benches/header_value.rs"

[[bench]]
name = "uri"
path = "benches/uri.rs"
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A general purpose library of common HTTP types

[![Build Status](https://travis-ci.org/hyperium/http.svg?branch=master)](https://travis-ci.org/hyperium/http)
[![CI](https://github.com/hyperium/http/workflows/CI/badge.svg)](https://github.com/hyperium/http/actions?query=workflow%3ACI)
[![Crates.io](https://img.shields.io/crates/v/http.svg)](https://crates.io/crates/http)
[![Documentation](https://docs.rs/http/badge.svg)][dox]

Expand All @@ -17,14 +17,12 @@ To use `http`, first add this to your `Cargo.toml`:

```toml
[dependencies]
http = "0.2"
http = "1.0"
```

Next, add this to your crate:

```rust
extern crate http;

use http::{Request, Response};

fn main() {
Expand All @@ -37,8 +35,6 @@ fn main() {
Create an HTTP request:

```rust
extern crate http;

use http::Request;

fn main() {
Expand All @@ -53,8 +49,6 @@ fn main() {
Create an HTTP response:

```rust
extern crate http;

use http::{Response, StatusCode};

fn main() {
Expand All @@ -66,12 +60,18 @@ fn main() {
}
```

# Supported Rust Versions

This project follows the [Tokio MSRV][msrv] and is currently set to `1.49`.

[msrv]: https://github.com/tokio-rs/tokio/#supported-rust-versions

# License

Licensed under either of

- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)

# Contribution

Expand Down
Loading