alexcrichton / curl-rust

Rust bindings to libcurl
MIT License
1k stars 234 forks source link

future compatibility warning on Windows #461

Open ehuss opened 1 year ago

ehuss commented 1 year ago

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?

sagebind commented 1 year ago

It should be possible to rewrite the test to not require mio_extras, taking a cursory glance at the offending test.