# rlua-async [](https://crates.io/crates/rlua-async) [](https://docs.rs/rlua-async)
`rlua-async` provides a way for asynchronous Rust code using `rlua` to
seamlessly interface with Lua code, the only condition being that the Lua code
must not make use of coroutines, as it is the way the `async` handling is
proxied through Lua.
## Make `async` builtins available to Lua code
The first thing you need to do is to make `async` builtins available to Lua
code. You can do it via eg.
[`ContextExt::create_async_function`](https://docs.rs/rlua-async/latest/rlua_async/trait.ContextExt.html#tymethod.create_async_function).
Once these builtins are available, they can be called by Lua code. This Lua code
must not use coroutines, as the coroutines are an essential part of how
`rlua-async` works internally.
## Call Lua code asynchronously
In addition to this, to actually make the code `async`, it is also required to
retrieve a `Future` when trying to call functions -- otherwise, evaluation is
not going to be asynchronous.
To do that, you can use methods like
[`FunctionExt::call_async`](https://docs.rs/rlua-async/latest/rlua_async/trait.FunctionExt.html#tymethod.call_async).
## Changelog
See [the Changelog](./CHANGELOG.md) for more details.