# mlua_serde Implementation of [serde](https://serde.rs/) Serializer/Deserializer for [mlua::Value](https://docs.rs/mlua/0.4.1/mlua/enum.Value.html) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/mlua_serde.svg)](https://crates.io/crates/mlua_serde) [![Documentation](https://docs.rs/mlua_serde/badge.svg)][dox] More information about this crate can be found in the [crate documentation][dox]. [dox]: https://docs.rs/mlua_serde/*/mlua_serde/ ## Usage To use `mlua_serde`, first add this to your `Cargo.toml`: ```toml [dependencies] mlua_serde = { version = "0.6", features = ["lua53"] } ``` You must choose between Lua 5.1, 5.2, 5.3 and 5.4. To use Lua 5.4, change `lua53` for `lua54` like this: ```toml [dependencies] mlua_serde = { version = "0.6", features = ["lua54"] } ``` If you don't have lua installed on your system for some reason, use the `vendored` feature: ```toml [dependencies] mlua_serde = { version = "0.6", features = ["lua53", "vendored"] } ``` Next, you can use `to_value`/`from_value` functions to serialize/deserialize: ```rust #[derive(Serialize, Deserialize)] struct Foo { bar: u32, baz: Vec, } fn main() { let lua = mlua::Lua::new(); let foo = Foo { bar: 42, baz: vec![String::from("fizz"), String::from("buzz")], }; let value = mlua_serde::to_value(lua, &foo).unwrap(); lua.globals().set("value", value).unwrap(); lua.load( r#" assert(value["bar"] == 42) assert(value["baz"][2] == "buzz") "#).exec().unwrap(); } ```