diff --git a/src/languages/rust.js b/src/languages/rust.js index 13e7be19f2..c8192ec3d2 100644 --- a/src/languages/rust.js +++ b/src/languages/rust.js @@ -1,3 +1,4 @@ +// @ts-nocheck /* Language: Rust Author: Andrey Vlasovskikh @@ -6,6 +7,7 @@ Website: https://www.rust-lang.org Category: common, system */ +/** @typedef {import('highlight.js').LanguageFn} LanguageFn */ /** @type LanguageFn */ export default function(hljs) { @@ -213,7 +215,8 @@ export default function(hljs) { contains: [ { scope: "char.escape", - match: /\\('|\w|x\w{2}|u\w{4}|U\w{8})/ + // Match escape sequences: \\ \' \n \r \t \0 \xHH \u{HHHHHH} + match: /\\([\\'"nrt0]|x[0-9a-fA-F]{2}|u\{[0-9a-fA-F]{1,6}\})/ } ] } diff --git a/test/markup/rust/escape-backslash.expect.txt b/test/markup/rust/escape-backslash.expect.txt new file mode 100644 index 0000000000..5877f05e11 --- /dev/null +++ b/test/markup/rust/escape-backslash.expect.txt @@ -0,0 +1,3 @@ +if text.contains('\\') || text.contains('/') { + println!("found a slash"); +} \ No newline at end of file diff --git a/test/markup/rust/escape-backslash.txt b/test/markup/rust/escape-backslash.txt new file mode 100644 index 0000000000..30cb9983dd --- /dev/null +++ b/test/markup/rust/escape-backslash.txt @@ -0,0 +1,3 @@ +if text.contains('\\') || text.contains('/') { + println!("found a slash"); +} \ No newline at end of file diff --git a/test/markup/rust/lifetimes.expect.txt b/test/markup/rust/lifetimes.expect.txt new file mode 100644 index 0000000000..867573b574 --- /dev/null +++ b/test/markup/rust/lifetimes.expect.txt @@ -0,0 +1,17 @@ +fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { + if x.len() > y.len() { x } else { y } +} + +struct ImportantExcerpt<'a> { + part: &'a str, +} + +impl<'a> ImportantExcerpt<'a> { + fn level(&self) -> i32 { + 3 + } +} + +fn static_lifetime() -> &'static str { + "I have a static lifetime." +} \ No newline at end of file diff --git a/test/markup/rust/lifetimes.txt b/test/markup/rust/lifetimes.txt new file mode 100644 index 0000000000..e05e5fcae5 --- /dev/null +++ b/test/markup/rust/lifetimes.txt @@ -0,0 +1,17 @@ +fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { + if x.len() > y.len() { x } else { y } +} + +struct ImportantExcerpt<'a> { + part: &'a str, +} + +impl<'a> ImportantExcerpt<'a> { + fn level(&self) -> i32 { + 3 + } +} + +fn static_lifetime() -> &'static str { + "I have a static lifetime." +} \ No newline at end of file diff --git a/test/markup/rust/macros.expect.txt b/test/markup/rust/macros.expect.txt new file mode 100644 index 0000000000..5434a00a02 --- /dev/null +++ b/test/markup/rust/macros.expect.txt @@ -0,0 +1,16 @@ +println!("Hello, world!"); +vec![1, 2, 3]; +assert_eq!(x, y); +dbg!(my_variable); + +macro_rules! say_hello { + () => { + println!("Hello!"); + }; +} + +#[derive(Debug, Clone)] +struct Point { + x: i32, + y: i32, +} \ No newline at end of file diff --git a/test/markup/rust/macros.txt b/test/markup/rust/macros.txt new file mode 100644 index 0000000000..52029e2cd9 --- /dev/null +++ b/test/markup/rust/macros.txt @@ -0,0 +1,16 @@ +println!("Hello, world!"); +vec![1, 2, 3]; +assert_eq!(x, y); +dbg!(my_variable); + +macro_rules! say_hello { + () => { + println!("Hello!"); + }; +} + +#[derive(Debug, Clone)] +struct Point { + x: i32, + y: i32, +} \ No newline at end of file diff --git a/test/markup/rust/strings.expect.txt b/test/markup/rust/strings.expect.txt index 70ba1d7a56..2170f76568 100644 --- a/test/markup/rust/strings.expect.txt +++ b/test/markup/rust/strings.expect.txt @@ -1,8 +1,8 @@ 'a'; '\n'; -'\x1A'; -'\u12AS'; -'\U1234ASDF'; +'\x1A'; +'\u12AS'; +'\U1234ASDF'; '😭'; b'a';