Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/defs.rs')
-rw-r--r--crates/ide-db/src/defs.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs
index 32d242e8f2..49d26dfe25 100644
--- a/crates/ide-db/src/defs.rs
+++ b/crates/ide-db/src/defs.rs
@@ -989,3 +989,19 @@ impl From<GenericDef> for Definition {
}
}
}
+
+impl TryFrom<Definition> for GenericDef {
+ type Error = ();
+ fn try_from(def: Definition) -> Result<Self, Self::Error> {
+ match def {
+ Definition::Function(it) => Ok(it.into()),
+ Definition::Adt(it) => Ok(it.into()),
+ Definition::Trait(it) => Ok(it.into()),
+ Definition::TraitAlias(it) => Ok(it.into()),
+ Definition::TypeAlias(it) => Ok(it.into()),
+ Definition::SelfType(it) => Ok(it.into()),
+ Definition::Const(it) => Ok(it.into()),
+ _ => Err(()),
+ }
+ }
+}