# Rainbow Brackets

```elixir
Mix.install([
  {:lumis, "~> 0.9"},
  {:lumis_wasm_rust, "~> 0.26.0"}
])
```

A parser is an ordinary dependency. `lumis_wasm_rust` carries the Rust grammar and
the `brackets.scm` query below; without it `Lumis.highlight!/2` raises.

## Example

Rainbow brackets use each language's Tree-sitter `brackets.scm` query. The Rust query includes `()`, `[]`, `{}`, `< >`, and closure pipes, and excludes string delimiters from rainbow coloring.

```elixir
code = ~S'''
fn main() {
    let foo = OptionalI32::AnI32(1);
    match foo {
        OptionalI32::AnI32(n) => println!("it is an i32: {}", n),
        OptionalI32::Nothing => println!("it is nothing!"),
    }
}
'''

Lumis.highlight!(code,
  rainbow_brackets: true,
  formatter:
    {:html_inline,
     language: "rust",
     theme: "catppuccin_mocha",
     include_highlights: true}
)
```
