rust/compiler/rustc_middle
Nicholas Nethercote 9d5cf0f0bf Remove the InternIteratorElement impl for &'a T.
`InternIteratorElement` is a trait used to intern values produces by
iterators. There are three impls, corresponding to iterators that
produce different types:
- One for `T`, which operates straightforwardly.
- One for `Result<T, E>`, which is fallible, and will fail early with an
  error result if any of the iterator elements are errors.
- One for `&'a T`, which clones the items as it iterates.

That last one is bad: it's extremely easy to use it without realizing
that it clones, which goes against Rust's normal "explicit is better"
approach to cloning.

So this commit just removes it. In practice, there weren't many use
sites. For all but one of them `into_iter()` could be used, which avoids
the need for cloning. And for the one remaining case `copied()` is
used.
2023-02-17 22:24:34 +11:00
..
src Remove the InternIteratorElement impl for &'a T. 2023-02-17 22:24:34 +11:00
Cargo.toml Give a more helpful error for "trimmed_def_paths construted" 2022-12-22 13:12:15 -06:00
README.md

For more information about how rustc works, see the rustc dev guide.