The mio dependency on Windows is out of date, and depends on winapi 0.2 which will stop compiling in the future.
Details
The package `winapi v0.2.8` currently triggers the following future incompatibility lints:
> warning: `Debug` can't be derived on this `#[repr(packed)]` struct that does not derive `Copy`
> --> C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\macros.rs:263:29
> |
> 263 | #[repr(C)] #[derive(Debug)] $(#[$attrs])*
> | ^^^^^
> |
> ::: C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\mmreg.rs:290:1
> |
> 290 | / STRUCT!{#[repr(packed)] struct WAVEFORMATEX {
> 291 | | wFormatTag: ::WORD,
> 292 | | nChannels: ::WORD,
> 293 | | nSamplesPerSec: ::DWORD,
> ... |
> 297 | | cbSize: ::WORD,
> 298 | | }}
> | |__- in this macro invocation
> |
> = note: `#[allow(unaligned_references)]` on by default
> = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
> = note: for more information, see issue #82523
> = note: this warning originates in the derive macro `Debug` which comes from the expansion of the macro `STRUCT` (in Nightly builds, run with -Z macro-backtrace for more info)
>
> warning: `Debug` can't be derived on this `#[repr(packed)]` struct that does not derive `Copy`
> --> C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\macros.rs:263:29
> |
> 263 | #[repr(C)] #[derive(Debug)] $(#[$attrs])*
> | ^^^^^
> |
> ::: C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\mmreg.rs:299:1
> |
> 299 | / STRUCT!{#[repr(packed)] struct WAVEFORMATEXTENSIBLE {
> 300 | | Format: ::WAVEFORMATEX,
> 301 | | Samples: ::WORD,
> 302 | | dwChannelMask: ::DWORD,
> 303 | | SubFormat: ::GUID,
> 304 | | }}
> | |__- in this macro invocation
> |
> = note: `#[allow(unaligned_references)]` on by default
> = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
> = note: for more information, see issue #82523
> = note: this warning originates in the derive macro `Debug` which comes from the expansion of the macro `STRUCT` (in Nightly builds, run with -Z macro-backtrace for more info)
>
> warning: `Debug` can't be derived on this `#[repr(packed)]` struct that does not derive `Copy`
> --> C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\macros.rs:263:29
> |
> 263 | #[repr(C)] #[derive(Debug)] $(#[$attrs])*
> | ^^^^^
> |
> ::: C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\usbspec.rs:26:1
> |
> 26 | / STRUCT!{#[repr(packed)] struct USB_CONFIGURATION_DESCRIPTOR {
> 27 | | bLength: ::UCHAR,
> 28 | | bDescriptorType: ::UCHAR,
> 29 | | wTotalLength: ::USHORT,
> ... |
> 34 | | MaxPower: ::UCHAR,
> 35 | | }}
> | |__- in this macro invocation
> |
> = note: `#[allow(unaligned_references)]` on by default
> = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
> = note: for more information, see issue #82523
> = note: this warning originates in the derive macro `Debug` which comes from the expansion of the macro `STRUCT` (in Nightly builds, run with -Z macro-backtrace for more info)
>
> warning: `Debug` can't be derived on this `#[repr(packed)]` struct that does not derive `Copy`
> --> C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\macros.rs:263:29
> |
> 263 | #[repr(C)] #[derive(Debug)] $(#[$attrs])*
> | ^^^^^
> |
> ::: C:\Users\eric\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\winusb.rs:8:1
> |
> 8 | / STRUCT!{#[repr(packed)] struct WINUSB_SETUP_PACKET {
> 9 | | RequestType: ::UCHAR,
> 10 | | Request: ::UCHAR,
> 11 | | Value: ::USHORT,
> 12 | | Index: ::USHORT,
> 13 | | Length: ::USHORT,
> 14 | | }}
> | |__- in this macro invocation
> |
> = note: `#[allow(unaligned_references)]` on by default
> = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
> = note: for more information, see issue #82523
> = note: this warning originates in the derive macro `Debug` which comes from the expansion of the macro `STRUCT` (in Nightly builds, run with -Z macro-backtrace for more info)
>
A newer version of mio doesn't have that problem. However, mio-extras is also out-of-date. These are only used in a single test. I'm wondering if it is possible to rewrite that test to not require a channel so that mio-extras can be dropped?
The
mio
dependency on Windows is out of date, and depends on winapi 0.2 which will stop compiling in the future.Details
The package `winapi v0.2.8` currently triggers the following future incompatibility lints:
A newer version of mio doesn't have that problem. However, mio-extras is also out-of-date. These are only used in a single test. I'm wondering if it is possible to rewrite that test to not require a channel so that mio-extras can be dropped?