Description
While compiling tokio-postgres with cargo 1.75.0-nightly (794d0a825 2023-10-03)
, I got the following error:
The following warnings were discovered during the build. These warnings are an
indication that the packages contain code that will become an error in a
future release of Rust. These warnings typically cover changes to close
soundness problems, unintended or undocumented behavior, or critical problems
that cannot be fixed in a backwards-compatible fashion, and are not expected
to be in wide use.
Each warning should contain a link for more information on what the warning
means and how to resolve it.
To solve this problem, you can try the following approaches:
- If the issue is not solved by updating the dependencies, a fix has to be
implemented by those dependencies. You can help with that by notifying the
maintainers of this problem (e.g. by creating a bug report) or by proposing a
fix to the maintainers (e.g. by creating a pull request):
- rustc-serialize@0.3.24
- Repository: https://github.com/rust-lang/rustc-serialize
- Detailed warning command: `cargo report future-incompatibilities --id 2 --package rustc-serialize@0.3.24`
- If waiting for an upstream fix is not an option, you can use the `[patch]`
section in `Cargo.toml` to use your own version of the dependency. For more
information, see:
https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section
The package `rustc-serialize v0.3.24` currently triggers the following future incompatibility lints:
> warning: impl method assumes more implied bounds than the corresponding trait method
> --> /Users/me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustc-serialize-0.3.24/src/serialize.rs:1155:41
> |
> 1155 | fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'static, T>, D::Error> {
> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace this type to make the impl signature compatible: `Result<Cow<'a, T>, <D as serialize::Decoder>::Error>`
> |
> = 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 #105572 <https://github.com/rust-lang/rust/issues/105572>
> = note: `-W implied-bounds-entailment` implied by `-W future-incompatible`
> = help: to override `-W future-incompatible` add `#[allow(implied_bounds_entailment)]`
>
However, it is no longer possible to file a report with rustc-serialize
since they got archived in August 2021.
The dependency within rust-postgres
which pulls in rustc-serialize
is eui48
. They have been made aware of this issue in January 2022, but there is no response from the author and seemingly only maintainer of the repo @abaumhauer who hasn't committed to the repo since August 2020.
To make sure that rust-postgres
will still compile with future versions of the Rust compiler, I would suggest replacing the eui48
dependency. Others have seemed to move to one of:
- macaddr, last commit in December 2020
- advmac, last commit in December 2022
- hwaddr, last commit in November 2020
- mac_address, last commit in May 2023
Out of these, I would suggest using the first one since it has the least amount of dependencies and is probably least likely to break as a result.