rust-lang / vscode-rust

Rust extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=rust-lang.rust
Other
1.39k stars 167 forks source link

Show resolved traits #635

Open Mossop opened 5 years ago

Mossop commented 5 years ago

It seems very frequent in rust to call functions that modify the form of some implementation, f.e. Iterator::filter, io::Read::chain etc. Chaining calls like this ends up with a type that becomes very complex including multiple generics. For example I can trivially create a type that looks like "std::iter::Filter<std::iter::Map<runner::utils::ContentIterator, [closure@file-store/tests/runner/read.rs:211:14: 211:23]>, [closure@file-store/tests/runner/read.rs:212:17: 212:28]>" when all I really care about is what form the Iterator trait implementation takes.

It would be really useful if I could get a list of the traits that a given type implements with its associated types filled in as much as possible. As an example it should be possible to show that the above example implements Iterator.

p-avital commented 5 years ago

That would be super useful, although I'm not sure how the UI for this would behave

Mossop commented 5 years ago

I was thinking something like a tree view in the sidebar.

I might be interested in trying to implement this if it seems useful (and probably if RLS already has the info needed).