diff options
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r-- | crates/ra_hir/src/ty.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index 4e5bdbae4..b54c80318 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs | |||
@@ -583,6 +583,19 @@ impl Ty { | |||
583 | ty => ty, | 583 | ty => ty, |
584 | }) | 584 | }) |
585 | } | 585 | } |
586 | |||
587 | /// If this is an `impl Trait` or `dyn Trait`, returns that trait. | ||
588 | pub fn inherent_trait(&self) -> Option<Trait> { | ||
589 | match self { | ||
590 | Ty::Dyn(predicates) | Ty::Opaque(predicates) => { | ||
591 | predicates.iter().find_map(|pred| match pred { | ||
592 | GenericPredicate::Implemented(tr) => Some(tr.trait_), | ||
593 | _ => None, | ||
594 | }) | ||
595 | } | ||
596 | _ => None, | ||
597 | } | ||
598 | } | ||
586 | } | 599 | } |
587 | 600 | ||
588 | impl HirDisplay for &Ty { | 601 | impl HirDisplay for &Ty { |