Darwin [snip] 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:08:47 PST 2022; root:xnu-8792.61.2~4/RELEASE_X86_64 x86_64
Description
hyper only declares its dependency on tokio as:
tokio = { version = "1", features = ["sync"] }
However, hyper really requires at least v1.27.
If you attempt to compile hyper, and your lockfile has tokio locked to a lower version, you'll get:
» cargo b
Compiling hyper v0.14.28
error[E0277]: the trait bound `tokio::net::TcpStream: AsFd` is not satisfied
--> /Users/roy/.cargo/registry/src/-662ab3103e52a138/hyper-0.14.28/src/server/tcp.rs:215:40
|
215 | let sock_ref = socket2::SockRef::from(&socket);
| ^^^^^^^^^^^^^^^^^^^^^^ the trait `AsFd` is not implemented for `tokio::net::TcpStream`
|
= help: the following other types implement trait `AsFd`:
&T
&mut T
Arc<T>
BorrowedFd<'_>
Box<T>
ChildStderr
ChildStdin
ChildStdout
and 19 others
= note: required because of the requirements on the impl of `From<&tokio::net::TcpStream>` for `SockRef<'_>`
This error is correct: tokio::net::TcpStream does not impl AsFd: docs at v1.26. That impl isn't added until v1.27.
So, hyper depends on at least tokio v1.27; it'd be nice to have Cargo.toml note that, as that will cause cargo to realize that it must upgrade that dependency in the lockfile:
Version
More complete tree
``` hyper v0.14.28 ├── bytes v1.1.0 ├── futures-channel v0.3.30 (*) ├── futures-core v0.3.30 ├── futures-util v0.3.30 (*) ├── h2 v0.3.26 (*) ├── http v0.2.8 (*) ├── http-body v0.4.3 (*) ├── httparse v1.8.0 ├── httpdate v1.0.2 ├── itoa v1.0.1 ├── pin-project-lite v0.2.9 ├── socket2 v0.5.7 │ └── libc v0.2.154 ├── tokio v1.26.0 (*) ├── tower-service v0.3.0 ├── tracing v0.1.40 (*) └── want v0.3.0 ├── log v0.4.20 (*) └── try-lock v0.2.2 ```Platform
Description
hyper
only declares its dependency ontokio
as:However,
hyper
really requires at least v1.27.If you attempt to compile hyper, and your lockfile has
tokio
locked to a lower version, you'll get:This error is correct:
tokio::net::TcpStream
does notimpl AsFd
: docs at v1.26. Thatimpl
isn't added until v1.27.So,
hyper
depends on at leasttokio
v1.27; it'd be nice to haveCargo.toml
note that, as that will causecargo
to realize that it must upgrade that dependency in the lockfile:It does compile against v1.27.