Parse crate in paths
diff --git a/src/ident.rs b/src/ident.rs
index 4af78e6..5d55957 100644
--- a/src/ident.rs
+++ b/src/ident.rs
@@ -165,6 +165,12 @@
     }
 }
 
+impl From<Token![crate]> for Ident {
+    fn from(tok: Token![crate]) -> Self {
+        Ident::new(Term::intern("crate"), tok.0)
+    }
+}
+
 impl<'a> From<Cow<'a, str>> for Ident {
     fn from(s: Cow<'a, str>) -> Self {
         Ident::new(Term::intern(&s), Span::default())
diff --git a/src/ty.rs b/src/ty.rs
index b2d9046..fee6326 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -755,6 +755,8 @@
             keyword!(self) => { Into::into }
             |
             keyword!(Self) => { Into::into }
+            |
+            keyword!(crate) => { Into::into }
         )
     ));