mlua_serde

Implementation of serde Serializer/Deserializer for mlua::Value

License: MIT Crates.io Documentation

More information about this crate can be found in the crate documentation.

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();

} ```