Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/hir.rs')
-rw-r--r--crates/hir-def/src/hir.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/crates/hir-def/src/hir.rs b/crates/hir-def/src/hir.rs
index 3c62b04f97..a575a2d199 100644
--- a/crates/hir-def/src/hir.rs
+++ b/crates/hir-def/src/hir.rs
@@ -48,6 +48,22 @@ pub enum ExprOrPatId {
ExprId(ExprId),
PatId(PatId),
}
+
+impl ExprOrPatId {
+ pub fn as_expr(self) -> Option<ExprId> {
+ match self {
+ Self::ExprId(v) => Some(v),
+ _ => None,
+ }
+ }
+
+ pub fn as_pat(self) -> Option<PatId> {
+ match self {
+ Self::PatId(v) => Some(v),
+ _ => None,
+ }
+ }
+}
stdx::impl_from!(ExprId, PatId for ExprOrPatId);
#[derive(Debug, Clone, Eq, PartialEq)]