{"version":3,"file":"rust.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/rust.js"],"sourcesContent":["/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/\n\n/** @type LanguageFn */\n\nfunction rust(hljs) {\n  const regex = hljs.regex;\n  // ============================================\n  // Added to support the r# keyword, which is a raw identifier in Rust.\n  const RAW_IDENTIFIER = /(r#)?/;\n  const UNDERSCORE_IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.UNDERSCORE_IDENT_RE);\n  const IDENT_RE = regex.concat(RAW_IDENTIFIER, hljs.IDENT_RE);\n  // ============================================\n  const FUNCTION_INVOKE = {\n    className: \"title.function.invoke\",\n    relevance: 0,\n    begin: regex.concat(\n      /\\b/,\n      /(?!let|for|while|if|else|match\\b)/,\n      IDENT_RE,\n      regex.lookahead(/\\s*\\(/))\n  };\n  const NUMBER_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n  const KEYWORDS = [\n    \"abstract\",\n    \"as\",\n    \"async\",\n    \"await\",\n    \"become\",\n    \"box\",\n    \"break\",\n    \"const\",\n    \"continue\",\n    \"crate\",\n    \"do\",\n    \"dyn\",\n    \"else\",\n    \"enum\",\n    \"extern\",\n    \"false\",\n    \"final\",\n    \"fn\",\n    \"for\",\n    \"if\",\n    \"impl\",\n    \"in\",\n    \"let\",\n    \"loop\",\n    \"macro\",\n    \"match\",\n    \"mod\",\n    \"move\",\n    \"mut\",\n    \"override\",\n    \"priv\",\n    \"pub\",\n    \"ref\",\n    \"return\",\n    \"self\",\n    \"Self\",\n    \"static\",\n    \"struct\",\n    \"super\",\n    \"trait\",\n    \"true\",\n    \"try\",\n    \"type\",\n    \"typeof\",\n    \"union\",\n    \"unsafe\",\n    \"unsized\",\n    \"use\",\n    \"virtual\",\n    \"where\",\n    \"while\",\n    \"yield\"\n  ];\n  const LITERALS = [\n    \"true\",\n    \"false\",\n    \"Some\",\n    \"None\",\n    \"Ok\",\n    \"Err\"\n  ];\n  const BUILTINS = [\n    // functions\n    'drop ',\n    // traits\n    \"Copy\",\n    \"Send\",\n    \"Sized\",\n    \"Sync\",\n    \"Drop\",\n    \"Fn\",\n    \"FnMut\",\n    \"FnOnce\",\n    \"ToOwned\",\n    \"Clone\",\n    \"Debug\",\n    \"PartialEq\",\n    \"PartialOrd\",\n    \"Eq\",\n    \"Ord\",\n    \"AsRef\",\n    \"AsMut\",\n    \"Into\",\n    \"From\",\n    \"Default\",\n    \"Iterator\",\n    \"Extend\",\n    \"IntoIterator\",\n    \"DoubleEndedIterator\",\n    \"ExactSizeIterator\",\n    \"SliceConcatExt\",\n    \"ToString\",\n    // macros\n    \"assert!\",\n    \"assert_eq!\",\n    \"bitflags!\",\n    \"bytes!\",\n    \"cfg!\",\n    \"col!\",\n    \"concat!\",\n    \"concat_idents!\",\n    \"debug_assert!\",\n    \"debug_assert_eq!\",\n    \"env!\",\n    \"eprintln!\",\n    \"panic!\",\n    \"file!\",\n    \"format!\",\n    \"format_args!\",\n    \"include_bytes!\",\n    \"include_str!\",\n    \"line!\",\n    \"local_data_key!\",\n    \"module_path!\",\n    \"option_env!\",\n    \"print!\",\n    \"println!\",\n    \"select!\",\n    \"stringify!\",\n    \"try!\",\n    \"unimplemented!\",\n    \"unreachable!\",\n    \"vec!\",\n    \"write!\",\n    \"writeln!\",\n    \"macro_rules!\",\n    \"assert_ne!\",\n    \"debug_assert_ne!\"\n  ];\n  const TYPES = [\n    \"i8\",\n    \"i16\",\n    \"i32\",\n    \"i64\",\n    \"i128\",\n    \"isize\",\n    \"u8\",\n    \"u16\",\n    \"u32\",\n    \"u64\",\n    \"u128\",\n    \"usize\",\n    \"f32\",\n    \"f64\",\n    \"str\",\n    \"char\",\n    \"bool\",\n    \"Box\",\n    \"Option\",\n    \"Result\",\n    \"String\",\n    \"Vec\"\n  ];\n  return {\n    name: 'Rust',\n    aliases: [ 'rs' ],\n    keywords: {\n      $pattern: hljs.IDENT_RE + '!?',\n      type: TYPES,\n      keyword: KEYWORDS,\n      literal: LITERALS,\n      built_in: BUILTINS\n    },\n    illegal: '</',\n    contains: [\n      hljs.C_LINE_COMMENT_MODE,\n      hljs.COMMENT('/\\\\*', '\\\\*/', { contains: [ 'self' ] }),\n      hljs.inherit(hljs.QUOTE_STRING_MODE, {\n        begin: /b?\"/,\n        illegal: null\n      }),\n      {\n        className: 'string',\n        variants: [\n          { begin: /b?r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n          { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n        ]\n      },\n      {\n        className: 'symbol',\n        begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n      },\n      {\n        className: 'number',\n        variants: [\n          { begin: '\\\\b0b([01_]+)' + NUMBER_SUFFIX },\n          { begin: '\\\\b0o([0-7_]+)' + NUMBER_SUFFIX },\n          { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUMBER_SUFFIX },\n          { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)'\n                   + NUMBER_SUFFIX }\n        ],\n        relevance: 0\n      },\n      {\n        begin: [\n          /fn/,\n          /\\s+/,\n          UNDERSCORE_IDENT_RE\n        ],\n        className: {\n          1: \"keyword\",\n          3: \"title.function\"\n        }\n      },\n      {\n        className: 'meta',\n        begin: '#!?\\\\[',\n        end: '\\\\]',\n        contains: [\n          {\n            className: 'string',\n            begin: /\"/,\n            end: /\"/,\n            contains: [\n              hljs.BACKSLASH_ESCAPE\n            ]\n          }\n        ]\n      },\n      {\n        begin: [\n          /let/,\n          /\\s+/,\n          /(?:mut\\s+)?/,\n          UNDERSCORE_IDENT_RE\n        ],\n        className: {\n          1: \"keyword\",\n          3: \"keyword\",\n          4: \"variable\"\n        }\n      },\n      // must come before impl/for rule later\n      {\n        begin: [\n          /for/,\n          /\\s+/,\n          UNDERSCORE_IDENT_RE,\n          /\\s+/,\n          /in/\n        ],\n        className: {\n          1: \"keyword\",\n          3: \"variable\",\n          5: \"keyword\"\n        }\n      },\n      {\n        begin: [\n          /type/,\n          /\\s+/,\n          UNDERSCORE_IDENT_RE\n        ],\n        className: {\n          1: \"keyword\",\n          3: \"title.class\"\n        }\n      },\n      {\n        begin: [\n          /(?:trait|enum|struct|union|impl|for)/,\n          /\\s+/,\n          UNDERSCORE_IDENT_RE\n        ],\n        className: {\n          1: \"keyword\",\n          3: \"title.class\"\n        }\n      },\n      {\n        begin: hljs.IDENT_RE + '::',\n        keywords: {\n          keyword: \"Self\",\n          built_in: BUILTINS,\n          type: TYPES\n        }\n      },\n      {\n        className: \"punctuation\",\n        begin: '->'\n      },\n      FUNCTION_INVOKE\n    ]\n  };\n}\n\nmodule.exports = rust;\n"],"names":["rust","hljs","regex","RAW_IDENTIFIER","UNDERSCORE_IDENT_RE","IDENT_RE","FUNCTION_INVOKE","NUMBER_SUFFIX","KEYWORDS","LITERALS","BUILTINS","TYPES","rust_1"],"mappings":"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","x_google_ignoreList":[0]}