rustdoc: Improve calculation of "Impls on Foreign Types" by jsha · Pull Request #97613 · rust-lang/rust (original) (raw)
The existing code to calculate whether an implementation was on a "Foreign Type" was duplicated across the sidebar generation and the page generation. It also came to the wrong conclusion for some cases where both the trait and the "for" type were re-exports.
This PR extracts the logic into a method of Impl
, breaks it into a multi-line method so it can be commented, and adds a case for when the trait and the "for" type came from the same crate. This fixes some cases - like the platform-specific integer types (__m256
, __m128
, etc). But it doesn't fix all cases. See the screenshots below.
The remaining types (CString
, NulError
, etc) are all from the alloc
crate, while the Clone
trait is from the core
crate. Since CString
and Clone
are both re-exported by std
, they are logically local to each other, but I couldn't figure out a good way to detect that in this code. I figure this is still a good step forward.
Related: #97610
r? @camelid