rust function
Highlight.js language definition for rust.
Implementation
Mode rust(Highlight hljs) {
final Mode mode0 = Mode();
mode0.begin = r'\\[\s\S]';
mode0.relevance = 0;
return Mode(
name: r'Rust',
aliases: [r'rs'],
keywords: {
r'$pattern': r'[a-zA-Z]\w*!?',
r'type': [
r'i8',
r'i16',
r'i32',
r'i64',
r'i128',
r'isize',
r'u8',
r'u16',
r'u32',
r'u64',
r'u128',
r'usize',
r'f32',
r'f64',
r'str',
r'char',
r'bool',
r'Box',
r'Option',
r'Result',
r'String',
r'Vec',
],
r'keyword': [
r'abstract',
r'as',
r'async',
r'await',
r'become',
r'box',
r'break',
r'const',
r'continue',
r'crate',
r'do',
r'dyn',
r'else',
r'enum',
r'extern',
r'false',
r'final',
r'fn',
r'for',
r'if',
r'impl',
r'in',
r'let',
r'loop',
r'macro',
r'match',
r'mod',
r'move',
r'mut',
r'override',
r'priv',
r'pub',
r'ref',
r'return',
r'self',
r'Self',
r'static',
r'struct',
r'super',
r'trait',
r'true',
r'try',
r'type',
r'typeof',
r'union',
r'unsafe',
r'unsized',
r'use',
r'virtual',
r'where',
r'while',
r'yield',
],
r'literal': [r'true', r'false', r'Some', r'None', r'Ok', r'Err'],
r'built_in': [
r'drop ',
r'Copy',
r'Send',
r'Sized',
r'Sync',
r'Drop',
r'Fn',
r'FnMut',
r'FnOnce',
r'ToOwned',
r'Clone',
r'Debug',
r'PartialEq',
r'PartialOrd',
r'Eq',
r'Ord',
r'AsRef',
r'AsMut',
r'Into',
r'From',
r'Default',
r'Iterator',
r'Extend',
r'IntoIterator',
r'DoubleEndedIterator',
r'ExactSizeIterator',
r'SliceConcatExt',
r'ToString',
r'assert!',
r'assert_eq!',
r'bitflags!',
r'bytes!',
r'cfg!',
r'col!',
r'concat!',
r'concat_idents!',
r'debug_assert!',
r'debug_assert_eq!',
r'env!',
r'eprintln!',
r'panic!',
r'file!',
r'format!',
r'format_args!',
r'include_bytes!',
r'include_str!',
r'line!',
r'local_data_key!',
r'module_path!',
r'option_env!',
r'print!',
r'println!',
r'select!',
r'stringify!',
r'try!',
r'unimplemented!',
r'unreachable!',
r'vec!',
r'write!',
r'writeln!',
r'macro_rules!',
r'assert_ne!',
r'debug_assert_ne!',
],
},
illegal: r'</',
contains: [
Mode(
scope: r'comment',
begin: r'//',
end: r'$',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(
scope: r'comment',
begin: r'/\*',
end: r'\*/',
contains: [
r'self',
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(scope: r'string', begin: r'b?"', end: r'"', contains: [mode0]),
Mode(scope: r'symbol', begin: r"'[a-zA-Z_][a-zA-Z0-9_]*(?!')"),
Mode(
scope: r'string',
variants: [
Mode(begin: r'b?r(#*)"(.|\n)*?"\1(?!#)'),
Mode(
begin: r"b?'",
end: r"'",
contains: [
Mode(
scope: r'char.escape',
match: r"\\('|\w|x\w{2}|u\w{4}|U\w{8})",
),
],
),
],
),
Mode(
scope: r'number',
variants: [
Mode(begin: r'\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?'),
Mode(begin: r'\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?'),
Mode(
begin: r'\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?',
),
Mode(
begin:
r'\b(\d[\d_]*(\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?',
),
],
relevance: 0,
),
Mode(
begin: [r'fn', r'\s+', r'(r#)?[a-zA-Z_]\w*'],
scope: {1: r'keyword', 3: r'title.function'},
),
Mode(
scope: r'meta',
begin: r'#!?\[',
end: r'\]',
contains: [
Mode(scope: r'string', begin: r'"', end: r'"', contains: [mode0]),
],
),
Mode(
begin: [r'let', r'\s+', r'(?:mut\s+)?', r'(r#)?[a-zA-Z_]\w*'],
scope: {1: r'keyword', 3: r'keyword', 4: r'variable'},
),
Mode(
begin: [r'for', r'\s+', r'(r#)?[a-zA-Z_]\w*', r'\s+', r'in'],
scope: {1: r'keyword', 3: r'variable', 5: r'keyword'},
),
Mode(
begin: [r'type', r'\s+', r'(r#)?[a-zA-Z_]\w*'],
scope: {1: r'keyword', 3: r'title.class'},
),
Mode(
begin: [
r'(?:trait|enum|struct|union|impl|for)',
r'\s+',
r'(r#)?[a-zA-Z_]\w*',
],
scope: {1: r'keyword', 3: r'title.class'},
),
Mode(
begin: r'[a-zA-Z]\w*::',
keywords: {
r'keyword': r'Self',
r'built_in': [
r'drop ',
r'Copy',
r'Send',
r'Sized',
r'Sync',
r'Drop',
r'Fn',
r'FnMut',
r'FnOnce',
r'ToOwned',
r'Clone',
r'Debug',
r'PartialEq',
r'PartialOrd',
r'Eq',
r'Ord',
r'AsRef',
r'AsMut',
r'Into',
r'From',
r'Default',
r'Iterator',
r'Extend',
r'IntoIterator',
r'DoubleEndedIterator',
r'ExactSizeIterator',
r'SliceConcatExt',
r'ToString',
r'assert!',
r'assert_eq!',
r'bitflags!',
r'bytes!',
r'cfg!',
r'col!',
r'concat!',
r'concat_idents!',
r'debug_assert!',
r'debug_assert_eq!',
r'env!',
r'eprintln!',
r'panic!',
r'file!',
r'format!',
r'format_args!',
r'include_bytes!',
r'include_str!',
r'line!',
r'local_data_key!',
r'module_path!',
r'option_env!',
r'print!',
r'println!',
r'select!',
r'stringify!',
r'try!',
r'unimplemented!',
r'unreachable!',
r'vec!',
r'write!',
r'writeln!',
r'macro_rules!',
r'assert_ne!',
r'debug_assert_ne!',
],
r'type': [
r'i8',
r'i16',
r'i32',
r'i64',
r'i128',
r'isize',
r'u8',
r'u16',
r'u32',
r'u64',
r'u128',
r'usize',
r'f32',
r'f64',
r'str',
r'char',
r'bool',
r'Box',
r'Option',
r'Result',
r'String',
r'Vec',
],
},
),
Mode(scope: r'punctuation', begin: r'->'),
Mode(
scope: r'title.function.invoke',
relevance: 0,
begin: r'\b(?!let|for|while|if|else|match\b)(r#)?[a-zA-Z]\w*(?=\s*\()',
),
],
);
}