When you upgraded `foo` from 2021 to 2024, `cargo fix` would have had to add a `Leak` bound to the parameter on the method. Removing that bound would be a breaking change. Therefore, the issue could actually be in `bar`. But this also highlights another issue: it's a breaking change to start allowing `!Leak` types to be passed to any generic method of a trait, even with this firewall. That means like `Iterator::map` can't take a closure which has a `!Leak` type in its state, for example.
But also what is the issue in `bar` if so? In 2021 edition, the interface of any trait you impl coming from a 2024 edition crate is tested under 2024 edition somehow? Does that work? What does the error message say to you?
My point is not that this is impossible, but that its not easy at all.
Comments
Follow-up from the author on Reddit:
https://www.reddit.com/r/rust/comments/16ltgn1/comment/k145i...