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

Breaking change in 1.0.1 #52

Closed
ETKNeil opened this issue Nov 15, 2022 · 2 comments
Closed

Breaking change in 1.0.1 #52

ETKNeil opened this issue Nov 15, 2022 · 2 comments

Comments

@ETKNeil
Copy link

ETKNeil commented Nov 15, 2022

1.0.0 is fine but 1.0.1 does not compile

error[E0277]: the trait bound `Socket: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:236:13
    |
236 | unsafe impl SocketlikeViewType for socket2::Socket {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `Socket`
    |
    = help: the following other types implement trait `From<T>`:
              <Socket as From<std::net::TcpListener>>
              <Socket as From<std::net::TcpStream>>
              <Socket as From<std::net::UdpSocket>>
              <Socket as From<std::os::unix::net::UnixDatagram>>
              <Socket as From<std::os::unix::net::UnixListener>>
              <Socket as From<std::os::unix::net::UnixStream>>
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<Socket>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:236:13
    |
236 | unsafe impl SocketlikeViewType for socket2::Socket {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<Socket>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `Socket`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::TcpStream: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:258:13
    |
258 | unsafe impl SocketlikeViewType for mio::net::TcpStream {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::TcpStream`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::TcpStream>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:258:13
    |
258 | unsafe impl SocketlikeViewType for mio::net::TcpStream {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::TcpStream>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::TcpStream`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::TcpListener: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:260:13
    |
260 | unsafe impl SocketlikeViewType for mio::net::TcpListener {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::TcpListener`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::TcpListener>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:260:13
    |
260 | unsafe impl SocketlikeViewType for mio::net::TcpListener {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::TcpListener>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::TcpListener`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::UdpSocket: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:262:13
    |
262 | unsafe impl SocketlikeViewType for mio::net::UdpSocket {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::UdpSocket`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::UdpSocket>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:262:13
    |
262 | unsafe impl SocketlikeViewType for mio::net::UdpSocket {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::UdpSocket>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::UdpSocket`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::UnixDatagram: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:265:13
    |
265 | unsafe impl SocketlikeViewType for mio::net::UnixDatagram {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::UnixDatagram`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::UnixDatagram>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:265:13
    |
265 | unsafe impl SocketlikeViewType for mio::net::UnixDatagram {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::UnixDatagram>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::UnixDatagram`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::UnixListener: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:268:13
    |
268 | unsafe impl SocketlikeViewType for mio::net::UnixListener {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::UnixListener`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::UnixListener>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:268:13
    |
268 | unsafe impl SocketlikeViewType for mio::net::UnixListener {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::UnixListener>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::UnixListener`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::net::UnixStream: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:271:13
    |
271 | unsafe impl SocketlikeViewType for mio::net::UnixStream {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::net::UnixStream`
    |
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:38
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                      ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::net::UnixStream>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:271:13
    |
271 | unsafe impl SocketlikeViewType for mio::net::UnixStream {}
    |             ^^^^^^^^^^^^^^^^^^ the trait `From<mio::net::UnixStream>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::net::UnixStream`
note: required by a bound in `SocketlikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:43:55
    |
43  | pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
    |                                                       ^^^^^^^^^^^^^^ required by this bound in `SocketlikeViewType`

error[E0277]: the trait bound `mio::unix::pipe::Receiver: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:274:13
    |
274 | unsafe impl FilelikeViewType for mio::unix::pipe::Receiver {}
    |             ^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::unix::pipe::Receiver`
    |
    = help: the following other types implement trait `From<T>`:
              <mio::unix::pipe::Receiver as From<ChildStderr>>
              <mio::unix::pipe::Receiver as From<ChildStdout>>
note: required by a bound in `FilelikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:33:36
    |
33  | pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {}
    |                                    ^^^^^^^^^^^^ required by this bound in `FilelikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::unix::pipe::Receiver>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:274:13
    |
274 | unsafe impl FilelikeViewType for mio::unix::pipe::Receiver {}
    |             ^^^^^^^^^^^^^^^^ the trait `From<mio::unix::pipe::Receiver>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::unix::pipe::Receiver`
note: required by a bound in `FilelikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:33:51
    |
33  | pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {}
    |                                                   ^^^^^^^^^^^^ required by this bound in `FilelikeViewType`

error[E0277]: the trait bound `mio::unix::pipe::Sender: From<OwnedFd>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:277:13
    |
277 | unsafe impl FilelikeViewType for mio::unix::pipe::Sender {}
    |             ^^^^^^^^^^^^^^^^ the trait `From<OwnedFd>` is not implemented for `mio::unix::pipe::Sender`
    |
    = help: the trait `From<ChildStdin>` is implemented for `mio::unix::pipe::Sender`
note: required by a bound in `FilelikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:33:36
    |
33  | pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {}
    |                                    ^^^^^^^^^^^^ required by this bound in `FilelikeViewType`

error[E0277]: the trait bound `OwnedFd: From<mio::unix::pipe::Sender>` is not satisfied
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:277:13
    |
277 | unsafe impl FilelikeViewType for mio::unix::pipe::Sender {}
    |             ^^^^^^^^^^^^^^^^ the trait `From<mio::unix::pipe::Sender>` is not implemented for `OwnedFd`
    |
    = help: the following other types implement trait `From<T>`:
              <OwnedFd as From<ChildStderr>>
              <OwnedFd as From<ChildStdin>>
              <OwnedFd as From<ChildStdout>>
              <OwnedFd as From<File>>
              <OwnedFd as From<PidFd>>
              <OwnedFd as From<PipeReader>>
              <OwnedFd as From<PipeWriter>>
              <OwnedFd as From<std::net::TcpListener>>
            and 5 others
    = note: required because of the requirements on the impl of `Into<OwnedFd>` for `mio::unix::pipe::Sender`
note: required by a bound in `FilelikeViewType`
   --> /home/r/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.1/src/views.rs:33:51
    |
33  | pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {}
    |                                                   ^^^^^^^^^^^^ required by this bound in `FilelikeViewType`

For more information about this error, try `rustc --explain E0277`.
error: could not compile `io-lifetimes` due to 18 previous errors
@sunfishcode
Copy link
Owner

It turns out that socket2 and mio support in io-lifetimes 1.0 only worked by accident, and didn't work at all in older Rust versions that io-lifetimes intends to support. Upstream socket2 and mio have not yet implemented the std version of the I/O safety traits. Until they do so, io-lifetimes 1.0 won't be able to meaningfully support the "socket2" or "mio" features.

For users that need mio or socket2 support, I'm also continuing to maintain io-lifetimes 0.7, which doesn't use the traits in std, so it is able to support socket2 and mio.

@sunfishcode
Copy link
Owner

In retrospect I'm not sure I made the right call earlier. It may have been better to fix this in a 2.0.0 release. But at this point, I haven't seen any other reports of this problem, users that need the "socket2" or "mio" features will need to stick with 0.7 for now anyway, and releasing a 2.0.0 would create a lot of churn, so I don't think there's anything else to do here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants