[Pkg-rust-maintainers] Bug#1120237: rust-typemap: FTBFS: error: unnecessary parentheses around type

Santiago Vila sanvila at debian.org
Thu Nov 6 12:00:43 GMT 2025


Package: src:rust-typemap
Version: 0.3.3-2
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202511/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:rust-typemap, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem cargo
   dh_auto_clean -O--buildsystem=cargo
debian cargo wrapper: options = ['parallel=2'], profiles = [], parallel = ['-j2'], lto = 
debian cargo wrapper: rust_type = x86_64-unknown-linux-gnu, gnu_type = x86_64-linux-gnu
debian cargo wrapper: running subprocess (['env', 'RUST_BACKTRACE=1', '/usr/bin/cargo', 'clean', '--verbose', '--verbose'],) {'check': True}
     Removed 0 files
   dh_autoreconf_clean -O--buildsystem=cargo
   dh_clean -O--buildsystem=cargo
 debian/rules binary
dh binary --buildsystem cargo
   dh_update_autotools_config -O--buildsystem=cargo
   dh_autoreconf -O--buildsystem=cargo
   dh_auto_configure -O--buildsystem=cargo
debian cargo wrapper: options = ['parallel=2'], profiles = [], parallel = ['-j2'], lto = 

[... snipped ...]

   |
62 |     fn clone(&self) -> Box<CloneAny + Send> { (**self).clone_any_send() }
   |                            ^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
62 |     fn clone(&self) -> Box<dyn CloneAny + Send> { (**self).clone_any_send() }
   |                            +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:66:28
   |
66 |     fn clone(&self) -> Box<CloneAny + Sync> { (**self).clone_any_sync() }
   |                            ^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
66 |     fn clone(&self) -> Box<dyn CloneAny + Sync> { (**self).clone_any_sync() }
   |                            +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:70:28
   |
70 |     fn clone(&self) -> Box<CloneAny + Send + Sync> { (**self).clone_any_send_sync() }
   |                            ^^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
70 |     fn clone(&self) -> Box<dyn CloneAny + Send + Sync> { (**self).clone_any_send_sync() }
   |                            +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:83:38
   |
83 | unsafe impl<T: UnsafeAny> Implements<UnsafeAny> for T {
   |                                      ^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
83 | unsafe impl<T: UnsafeAny> Implements<dyn UnsafeAny> for T {
   |                                      +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:87:46
   |
87 | unsafe impl<T: UnsafeAny + Send> Implements<(UnsafeAny + Send)> for T {
   |                                              ^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
87 | unsafe impl<T: UnsafeAny + Send> Implements<(dyn UnsafeAny + Send)> for T {
   |                                              +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:91:46
   |
91 | unsafe impl<T: UnsafeAny + Sync> Implements<(UnsafeAny + Sync)> for T {
   |                                              ^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
91 | unsafe impl<T: UnsafeAny + Sync> Implements<(dyn UnsafeAny + Sync)> for T {
   |                                              +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:95:53
   |
95 | unsafe impl<T: UnsafeAny + Send + Sync> Implements<(UnsafeAny + Send + Sync)> for T {
   |                                                     ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
95 | unsafe impl<T: UnsafeAny + Send + Sync> Implements<(dyn UnsafeAny + Send + Sync)> for T {
   |                                                     +++

warning: trait objects without an explicit `dyn` are deprecated
  --> src/internals.rs:99:37
   |
99 | unsafe impl<T: CloneAny> Implements<CloneAny> for T {
   |                                     ^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
   |
99 | unsafe impl<T: CloneAny> Implements<dyn CloneAny> for T {
   |                                     +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:103:45
    |
103 | unsafe impl<T: CloneAny + Send> Implements<(CloneAny + Send)> for T {
    |                                             ^^^^^^^^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
103 | unsafe impl<T: CloneAny + Send> Implements<(dyn CloneAny + Send)> for T {
    |                                             +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:107:52
    |
107 | unsafe impl<T: CloneAny + Send + Sync> Implements<(CloneAny + Send + Sync)> for T {
    |                                                    ^^^^^^^^^^^^^^^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
107 | unsafe impl<T: CloneAny + Send + Sync> Implements<(dyn CloneAny + Send + Sync)> for T {
    |                                                    +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:111:37
    |
111 | unsafe impl<T: DebugAny> Implements<DebugAny> for T {
    |                                     ^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
111 | unsafe impl<T: DebugAny> Implements<dyn DebugAny> for T {
    |                                     +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:115:44
    |
115 | unsafe impl<T: DebugAny + Send> Implements<DebugAny + Send> for T {
    |                                            ^^^^^^^^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
115 | unsafe impl<T: DebugAny + Send> Implements<dyn DebugAny + Send> for T {
    |                                            +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:119:44
    |
119 | unsafe impl<T: DebugAny + Sync> Implements<DebugAny + Sync> for T {
    |                                            ^^^^^^^^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
119 | unsafe impl<T: DebugAny + Sync> Implements<dyn DebugAny + Sync> for T {
    |                                            +++

warning: trait objects without an explicit `dyn` are deprecated
   --> src/internals.rs:123:51
    |
123 | unsafe impl<T: DebugAny + Send + Sync> Implements<DebugAny + Send + Sync> for T {
    |                                                   ^^^^^^^^^^^^^^^^^^^^^^
    |
    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: if this is a dyn-compatible trait, use `dyn`
    |
123 | unsafe impl<T: DebugAny + Send + Sync> Implements<dyn DebugAny + Send + Sync> for T {
    |                                                   +++

warning: `typemap` (lib) generated 64 warnings (30 duplicates) (run `cargo fix --lib -p typemap` to apply 33 suggestions)
warning: `typemap` (lib test) generated 64 warnings (34 duplicates) (run `cargo fix --lib -p typemap --tests` to apply 30 suggestions)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.75s
warning: the following packages contain code that will be rejected by a future version of Rust: typemap v0.3.3 (/<<PKGBUILDDIR>>)
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
     Running `CARGO=/usr/bin/cargo CARGO_MANIFEST_DIR=/<<PKGBUILDDIR>> CARGO_MANIFEST_PATH=/<<PKGBUILDDIR>>/Cargo.toml CARGO_PKG_AUTHORS='Jonathan Reem <jonathan.reem at gmail.com>' CARGO_PKG_DESCRIPTION='A typesafe store for many value types.' CARGO_PKG_HOMEPAGE='' CARGO_PKG_LICENSE=MIT CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=typemap CARGO_PKG_README=README.md CARGO_PKG_REPOSITORY='https://github.com/reem/rust-typemap' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.3.3 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=3 CARGO_PKG_VERSION_PATCH=3 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/<<PKGBUILDDIR>>/target/x86_64-unknown-linux-gnu/debug/deps:/<<PKGBUILDDIR>>/target/x86_64-unknown-linux-gnu/debug:/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib' /<<PKGBUILDDIR>>/target/x86_64-unknown-linux-gnu/debug/deps/typemap-3d3e4dd57dc28e5c`

running 7 tests
test test::test_clonemap ... ok
test test::test_custom_bounds ... ok
test test::test_debugmap ... ok
test test::test_entry ... ok
test test::test_pairing ... ok
test test::test_entry_or_insert ... ok
test test::test_remove ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests typemap
     Running `CARGO=/usr/bin/cargo CARGO_CRATE_NAME=typemap  [too-long-redacted] alues())' --error-format human`
error: unnecessary parentheses around type
  --> src/internals.rs:87:45
   |
87 | unsafe impl<T: UnsafeAny + Send> Implements<(UnsafeAny + Send)> for T {
   |                                             ^                ^
   |
note: the lint level is defined here
  --> src/lib.rs:1:23
   |
 1 | #![deny(missing_docs, warnings)]
   |                       ^^^^^^^^
   = note: `#[deny(unused_parens)]` implied by `#[deny(warnings)]`
help: remove these parentheses
   |
87 - unsafe impl<T: UnsafeAny + Send> Implements<(UnsafeAny + Send)> for T {
87 + unsafe impl<T: UnsafeAny + Send> Implements<UnsafeAny + Send> for T {
   |

error: unnecessary parentheses around type
  --> src/internals.rs:91:45
   |
91 | unsafe impl<T: UnsafeAny + Sync> Implements<(UnsafeAny + Sync)> for T {
   |                                             ^                ^
   |
help: remove these parentheses
   |
91 - unsafe impl<T: UnsafeAny + Sync> Implements<(UnsafeAny + Sync)> for T {
91 + unsafe impl<T: UnsafeAny + Sync> Implements<UnsafeAny + Sync> for T {
   |

error: unnecessary parentheses around type
  --> src/internals.rs:95:52
   |
95 | unsafe impl<T: UnsafeAny + Send + Sync> Implements<(UnsafeAny + Send + Sync)> for T {
   |                                                    ^                       ^
   |
help: remove these parentheses
   |
95 - unsafe impl<T: UnsafeAny + Send + Sync> Implements<(UnsafeAny + Send + Sync)> for T {
95 + unsafe impl<T: UnsafeAny + Send + Sync> Implements<UnsafeAny + Send + Sync> for T {
   |

error: unnecessary parentheses around type
   --> src/internals.rs:103:44
    |
103 | unsafe impl<T: CloneAny + Send> Implements<(CloneAny + Send)> for T {
    |                                            ^               ^
    |
help: remove these parentheses
    |
103 - unsafe impl<T: CloneAny + Send> Implements<(CloneAny + Send)> for T {
103 + unsafe impl<T: CloneAny + Send> Implements<CloneAny + Send> for T {
    |

error: unnecessary parentheses around type
   --> src/internals.rs:107:51
    |
107 | unsafe impl<T: CloneAny + Send + Sync> Implements<(CloneAny + Send + Sync)> for T {
    |                                                   ^                      ^
    |
help: remove these parentheses
    |
107 - unsafe impl<T: CloneAny + Send + Sync> Implements<(CloneAny + Send + Sync)> for T {
107 + unsafe impl<T: CloneAny + Send + Sync> Implements<CloneAny + Send + Sync> for T {
    |

error: aborting due to 5 previous errors

error: doctest failed, to rerun pass `--doc`

Caused by:
  process didn't exit successfully: `CARGO=/usr/bin/cargo CA [too-long-redacted] -format human` (exit status: 1)
note: test exited abnormally; to see the full output pass --nocapture to the harness.
dh_auto_test: error: /usr/share/cargo/bin/cargo test --all returned exit code 1
make[1]: *** [debian/rules:6: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:3: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------



More information about the Pkg-rust-maintainers mailing list