
Description="Rust"

Categories = {"source"}

Digits=[[ (?:0x|0o|0b)[0-9a-fA-F\_uif]+|\d+[\.]?[\d\_uif]+(?:[eE][\-\+][\d\_uif]+)?|\d+ ]]

Keywords={
  { Id=1,
    List={"as", "box", "break", "const", "continue", "crate", "else",
          "extern", "false", "fn", "for", "if", "impl", "in", "let", "loop",
          "match", "mod", "move", "mut", "pub", "ref", "return", "self",
          "Self", "static", "super", "trait", "true", "type",
          "unsafe", "use", "where", "while", "abstract", "alignof", "become",
          "do", "final", "macro", "offsetof", "override", "priv", "pure",
          "sizeof", "typeof", "unsized", "virtual", "yield", "auto", "catch"
        }
  },
  { Id=2,
    List= { "u8", "u16", "u32", "u64", "i8", "i16", "i32", "i64",
            "f32", "f64", "usize", "isize", "char", "str", "struct","enum"
          }
  },

  -- weak keywords
  { Id=3,
    List= { "default", "dyn", "union"
          }
  },
  { Id=4,
    Regex=[[(\w+)\s*\(]]
  }
}

Strings = {
  Delimiter=[["]],
  RawPrefix="r",
  Escape = [[ \\[\'\\\"aftnrv]|\\U\{[0-9a-fA-F]{8}\}|\\u\{[0-9a-fA-F]{4}\}|\\x?? ]]
}

Comments = {
  { Block=true,
    Nested=true,
    Delimiter = { [[\/\*]], [[\*\/]] }
  },
  {
    Block=false,
    Delimiter = { [[//]] }
  }
}

IgnoreCase=false

PreProcessor = {
  Prefix=[[#]],
  Continuation="\\",
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^']]

EnableIndentation=true
