Skip to content

New ambiguity with From derive macro in 2024 prelude #145524

@ijackson

Description

@ijackson

Summary

I have a crate where I explicitly use derive_more::From (derive-more 1.x) and then use super::* in sub-modules. With current nightly, #[derive(From)] is now regarded as ambiguous.

I'm not using nightly features, so no derive_from (#144889). Looking for existing tickets I found #135672 but in that case the code was glob importing std modules, which I'm not doing, and #142448 which is about multiple globs, which I'm also not doing.

Code

https://salsa.debian.org/dgit-team/tag2upload-service-manager/-/tree/mini-sqlite-dump-0.1.0/mini-sqlite-dump?ref_type=tags
aka git clone https://salsa.debian.org/dgit-team/tag2upload-service-manager -b mini-sqlite-dump-0.1.0

https://docs.rs/crate/mini-sqlite-dump/0.1.0/builds/2421547

I expected to see this happen: it compiles with nightly like it does with stable.

Instead, this happened:

error[E0659]: `From` is ambiguous
   --> mini-sqlite-dump/src/text/reassemble.rs:22:30
    |
 22 | #[derive(Copy, Clone, Debug, From)]
    |                              ^^^^ ambiguous name
    |
    = note: ambiguous because of a conflict between a name from a glob import and an outer scope during import or macro resolution
note: `From` could refer to the derive macro imported here
   --> mini-sqlite-dump/src/text/reassemble.rs:2:5
    |
  2 | use super::*;
    |     ^^^^^^^^
    = help: consider adding an explicit import of `From` to disambiguate
    = help: or use `self::From` to refer to this derive macro unambiguously
note: `From` could also refer to the derive macro defined here
   --> /volatile/rustcargo/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/prelude/mod.rs:161:13
    |
161 |     pub use core::prelude::rust_2024::*;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^
 
For more information about this error, try `rustc --explain E0659`.

Version it worked on

1.90.0-beta.3

Version with regression

$ rustc +nightly -vV
rustc 1.91.0-nightly (2e2642e64 2025-08-16)
binary: rustc
commit-hash: 2e2642e641a941f0a1400c7827fd89aa86fef8f4
commit-date: 2025-08-16
host: x86_64-unknown-linux-gnu
release: 1.91.0-nightly
LLVM version: 21.1.0

@rustbot modify labels: +regression-from-stable-to-nightly -regression-untriaged

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.P-criticalCritical priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions