Working through method breakage ```mermaid sequenceDiagram participant upstream as upstream,<br/>2015 edition<br/>provides trait `Tr1`<br/>with `foo()` method participant crate as crate<br/>calls `t.foo()` where `t`<br/>implements `Tr1`+`Tr2` participant stdlib as stdlib<br/>provides trait `Tr2` Note over crate: developed against Rust 2018 edition Note over crate,stdlib: (no `foo()` method available<br/> on `Tr2` at this time) crate ->> upstream: t.foo() Note over upstream,crate: (Currently sole resolution available) stdlib ->> stdlib: stdlib adds `Tr2::foo()`,<br/>tagged with current (2021) edition opt crate edition < method edition Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning crate ->> upstream: t.foo() end crate ->> crate: crate upgrades to Rust 2021 edition opt crate edition = method edition Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning crate ->> upstream: t.foo() end stdlib ->> stdlib: Rust releases 2024 edition Note over stdlib: `Tr2::foo` remains tagged with 2021 edition opt crate edition = *method* edition (still) Note over stdlib, upstream: compiler detects both methods are available,<br/>signals ambiguity warning crate ->> upstream: t.foo() end crate ->> crate: crate attempts upgrade to Rust 2024 edition opt crate edition > method edition crate --X upstream: t.foo() Note over stdlib, upstream: now issues hard ambiguity error<br/>crate dev is forced to resolve ambiguity. end ```