Create a type that implements [`AsChunk`] and can capture Rust variables.
This macro allows to write Lua code directly in Rust code.
Rust variables can be referenced from Lua using `$` prefix, as shown in the example below.
User's Rust types needs to implement [`UserData`] or [`IntoLua`] traits.
Captured variables are **moved** into the chunk.
```rust
use mlua::{Lua, Result, chunk};
fn main() -> Result<()> {
let lua = Lua::new();
let name = "Rustacean";
lua.load(chunk! {
print("hello, " .. $name)
}).exec()
}
```
## Syntax issues
Since the Rust tokenizer will tokenize Lua code, this imposes some restrictions.
The main thing to remember is:
- Use double quoted strings (`""`) instead of single quoted strings (`''`).
(Single quoted strings only work if they contain a single character, since in Rust,
`'a'` is a character literal).
- Using Lua comments `--` is not desirable in **stable** Rust and can have bad side effects.
This is because procedural macros have Line/Column information available only in
**nightly** Rust. Instead, Lua chunks represented as a big single line of code in stable Rust.
As workaround, Rust comments `//` can be used.
Other minor limitations:
- Certain escape codes in string literals don't work. (Specifically: `\a`, `\b`, `\f`, `\v`,
`\123` (octal escape codes), `\u`, and `\U`).
These are accepted: : `\\`, `\n`, `\t`, `\r`, `\xAB` (hex escape codes), and `\0`.
- The `//` (floor division) operator is unusable, as its start a comment.
Everything else should work.
[`AsChunk`]: crate::chunk::AsChunk
[`UserData`]: crate::UserData
[`IntoLua`]: crate::IntoLua