tokio-rs/bytes

Fix minrust CI

Darksonn opened this issue · 2 comments

Due to a change in the nix crate, our minrust check in CI no longer works. This is because the minrust check uses cargo hack to try all the feature flag combinations, but cargo-hack depends on nix.

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:445:35
    |
445 |     pub fn set_sigev_notify(self: &mut Pin<Box<Self>>,
    |                                   ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:502:25
    |
502 |     pub fn cancel(self: &mut Pin<Box<Self>>) -> Result<AioCancelStat> {
    |                         ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:566:24
    |
566 |     pub fn error(self: &mut Pin<Box<Self>>) -> Result<()> {
    |                        ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:579:24
    |
579 |     pub fn fsync(self: &mut Pin<Box<Self>>, mode: AioFsyncMode) -> Result<()> {
    |                        ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:629:23
    |
629 |     pub fn read(self: &mut Pin<Box<Self>>) -> Result<()> {
    |                       ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:666:29
    |
666 |     pub fn aio_return(self: &mut Pin<Box<Self>>) -> Result<isize> {
    |                             ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error[E0658]: `&mut std::pin::Pin<std::boxed::Box<sys::aio::AioCb<'a>>>` cannot be used as the type of `self` without the `arbitrary_self_types` feature
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.22.1/src/sys/aio.rs:679:24
    |
679 |     pub fn write(self: &mut Pin<Box<Self>>) -> Result<()> {
    |                        ^^^^^^^^^^^^^^^^^^^
    |
    = note: for more information, see https://github.com/rust-lang/rust/issues/44874
    = help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)

error: aborting due to 7 previous errors

It's better to use +stable for cargo-hack installation or install cargo-hack from GitHub release (like tokio-rs/tracing#1100).

That sounds like a good approach.