Open
Description
I have a type alias for a type that implements Deref<Target=[T]
, but Rustdoc doesnt generate the corresponding section in the sidebar like it does for the concrete type I'm aliasing
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
pub struct Col<T: Copy, const N: usize> {
data: [T; N],
}
pub type Mat<T, const H: usize, const W: usize> = Col<Col<T, W>, H>;
// snip
impl<T: Copy, const N: usize> Deref for Col<T, N> {
type Target = [T];
fn deref(&self) -> &Self::Target {
&self.data
}
}
rustdoc 1.82.0 (f6e511e 2024-10-15) on macOS 15.2
Metadata
Metadata
Assignees
Labels
Type
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
camelid commentedon Dec 29, 2024
This is because rustdoc injects impls for type aliases using JS (to avoid doc size ballooning). The Deref impl is shown, just not the specialized Methods from Deref section. I suppose we'd just need to add special support for this to the code that generates the JS, as well as to the JS itself? cc @notriddle
notriddle commentedon Dec 30, 2024
Yes, that sounds like a reasonable idea.
The discussion I've been putting off is whether Deref should, in general, work this way. There's not really any particular difference from type aliases: most crates use it sparingly, but a few of them (for example, gtk) make extensive use of it.