diff --git a/lexers/embedded/rust.xml b/lexers/embedded/rust.xml
index 2ae11b4..f2d7a52 100644
--- a/lexers/embedded/rust.xml
+++ b/lexers/embedded/rust.xml
@@ -218,9 +218,6 @@
-
-
-
@@ -297,6 +294,13 @@
+
+
+
+
+
+
+
diff --git a/lexers/testdata/rust/proc_macros.actual b/lexers/testdata/rust/proc_macros.actual
new file mode 100644
index 0000000..5e56e20
--- /dev/null
+++ b/lexers/testdata/rust/proc_macros.actual
@@ -0,0 +1,14 @@
+use smallvec::{smallvec, SmallVec};
+
+lazy_static::lazy_static! {
+ static ref ONE: usize = 1;
+}
+
+fn main() {
+ pretty_assertions::assert_eq!(*ONE, *ONE);
+ let _: SmallVec<[_; 16]> = smallvec![1, 2, 3];
+
+ // And some builtin ones
+ println!("Hello, world!");
+ panic!();
+}
diff --git a/lexers/testdata/rust/proc_macros.expected b/lexers/testdata/rust/proc_macros.expected
new file mode 100644
index 0000000..55947a3
--- /dev/null
+++ b/lexers/testdata/rust/proc_macros.expected
@@ -0,0 +1,92 @@
+[
+ {"type":"Keyword","value":"use"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Name","value":"smallvec"},
+ {"type":"Text","value":"::"},
+ {"type":"Punctuation","value":"{"},
+ {"type":"Name","value":"smallvec"},
+ {"type":"Punctuation","value":","},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Name","value":"SmallVec"},
+ {"type":"Punctuation","value":"};"},
+ {"type":"TextWhitespace","value":"\n\n"},
+ {"type":"Name","value":"lazy_static"},
+ {"type":"Text","value":"::"},
+ {"type":"NameFunctionMagic","value":"lazy_static!"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Punctuation","value":"{"},
+ {"type":"TextWhitespace","value":"\n "},
+ {"type":"Keyword","value":"static"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Keyword","value":"ref"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"NameConstant","value":"ONE"},
+ {"type":"Text","value":": "},
+ {"type":"KeywordType","value":"usize"},
+ {"type":"Text","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberInteger","value":"1"},
+ {"type":"Punctuation","value":";"},
+ {"type":"TextWhitespace","value":"\n"},
+ {"type":"Punctuation","value":"}"},
+ {"type":"TextWhitespace","value":"\n\n"},
+ {"type":"Keyword","value":"fn"},
+ {"type":"Text","value":" "},
+ {"type":"NameFunction","value":"main"},
+ {"type":"Punctuation","value":"()"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Punctuation","value":"{"},
+ {"type":"TextWhitespace","value":"\n "},
+ {"type":"Name","value":"pretty_assertions"},
+ {"type":"Text","value":"::"},
+ {"type":"NameFunctionMagic","value":"assert_eq!"},
+ {"type":"Punctuation","value":"("},
+ {"type":"Operator","value":"*"},
+ {"type":"NameConstant","value":"ONE"},
+ {"type":"Punctuation","value":","},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"*"},
+ {"type":"NameConstant","value":"ONE"},
+ {"type":"Punctuation","value":");"},
+ {"type":"TextWhitespace","value":"\n "},
+ {"type":"KeywordDeclaration","value":"let"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Name","value":"_"},
+ {"type":"Text","value":": "},
+ {"type":"NameClass","value":"SmallVec"},
+ {"type":"Operator","value":"\u003c"},
+ {"type":"Punctuation","value":"["},
+ {"type":"Name","value":"_"},
+ {"type":"Punctuation","value":";"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberInteger","value":"16"},
+ {"type":"Punctuation","value":"]"},
+ {"type":"Operator","value":"\u003e"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"Operator","value":"="},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"NameFunctionMagic","value":"smallvec!"},
+ {"type":"Punctuation","value":"["},
+ {"type":"LiteralNumberInteger","value":"1"},
+ {"type":"Punctuation","value":","},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberInteger","value":"2"},
+ {"type":"Punctuation","value":","},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"LiteralNumberInteger","value":"3"},
+ {"type":"Punctuation","value":"];"},
+ {"type":"TextWhitespace","value":"\n\n "},
+ {"type":"CommentSingle","value":"// And some builtin ones\n"},
+ {"type":"TextWhitespace","value":" "},
+ {"type":"NameFunctionMagic","value":"println!"},
+ {"type":"Punctuation","value":"("},
+ {"type":"LiteralString","value":"\"Hello, world!\""},
+ {"type":"Punctuation","value":");"},
+ {"type":"TextWhitespace","value":"\n "},
+ {"type":"NameFunctionMagic","value":"panic!"},
+ {"type":"Punctuation","value":"();"},
+ {"type":"TextWhitespace","value":"\n"},
+ {"type":"Punctuation","value":"}"},
+ {"type":"TextWhitespace","value":"\n"}
+]