diff --git a/crates/assists/src/utils.rs b/crates/assists/src/utils.rs index 92b3c3b009b6..c074b8d02f95 100644 --- a/crates/assists/src/utils.rs +++ b/crates/assists/src/utils.rs @@ -308,7 +308,7 @@ pub mod iter { } } } - pub(crate) mod collect { + pub(crate) mod collect { pub trait IntoIterator { type Item; } diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs index 279d025417c5..7540f56a4b15 100644 --- a/crates/ide/src/inlay_hints.rs +++ b/crates/ide/src/inlay_hints.rs @@ -211,7 +211,9 @@ fn hint_iterator( ty: &Type, ) -> Option { let db = sema.db; - let strukt = ty.as_adt()?; + let strukt = std::iter::successors(Some(ty.clone()), |ty| ty.remove_ref()) + .last() + .and_then(|strukt| strukt.as_adt())?; let krate = strukt.krate(db)?; if krate.declaration_name(db).as_deref() != Some("core") { return None; @@ -1169,7 +1171,7 @@ fn main() { InlayHint { range: 175..225, kind: ChainingHint, - label: "&mut Take<&mut MyIter>", + label: "impl Iterator", }, InlayHint { range: 175..207,