1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /* TODO
- Add support for Markdown notation inside doc comments
- Add support for nested block comments...
- Match closure params even when not followed by dash or brace
- Add better support for macro definition
- */
- Prism.languages.rust = {
- 'comment': [
- {
- pattern: /(^|[^\\])\/\*[\w\W]*?\*\//,
- lookbehind: true
- },
- {
- pattern: /(^|[^\\:])\/\/.*?(\r?\n|$)/,
- lookbehind: true
- }
- ],
- 'string': [
- /b?r(#*)"(?:\\?.)*?"\1/,
- /b?("|')(?:\\?.)*?\1/
- ],
- 'keyword': /\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,
- 'attribute': {
- pattern: /#!?\[.+?\]/,
- alias: 'attr-name'
- },
- 'function': [
- /[a-z0-9_]+(?=\s*\()/i,
- // Macros can use parens or brackets
- /[a-z0-9_]+!(?=\s*\(|\[)/i
- ],
- 'macro-rules': {
- pattern: /[a-z0-9_]+!/i,
- alias: 'function'
- },
- // Hex, oct, bin, dec numbers with visual separators and type suffix
- 'number': /\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32)?|f32|f64))?\b/,
- // Closure params should not be confused with bitwise OR |
- 'closure-params': {
- pattern: /\|[^|]*\|(?=\s*[{-])/,
- inside: {
- 'punctuation': /[\|:,]/,
- 'operator': /[&*]/
- }
- },
- 'punctuation': /[{}[\];(),.:]|->/,
- 'operator': /[-+]{1,2}|!=?|<=?|>=?|={1,3}|&&?|\|\|?|\*|\/|\^|%|<<|>>@/
- };
|