rust function

Mode rust(
  1. Highlight hljs
)

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*\()',
      ),
    ],
  );
}