#lua #serde #serialization #de #mlua #value

mlua_serde

mlua Value 的 Serde (De) 序列化/反序列化实现

3 个不稳定版本

使用旧的 Rust 2015

0.6.0 2021年4月18日
0.5.1 2020年7月6日
0.5.0 2020年7月6日

#1012编码

MIT 许可证

30KB
848

mlua_serde

serde 序列化/反序列化器实现,用于 mlua::Value

License: MIT Crates.io Documentation

有关此包的更多信息,请参阅 包文档

使用方法

要使用 mlua_serde,首先将以下内容添加到您的 Cargo.toml

[dependencies]
mlua_serde = { version = "0.6", features = ["lua53"] }

您必须在 Lua 5.1、5.2、5.3 和 5.4 之间进行选择。要使用 Lua 5.4,将 lua53 更改为 lua54,如下所示

[dependencies]
mlua_serde = { version = "0.6", features = ["lua54"] }

如果您由于某些原因在系统上没有安装 lua,请使用 vendored 功能

[dependencies]
mlua_serde = { version = "0.6", features = ["lua53", "vendored"] }

接下来,您可以使用 to_value/from_value 函数进行序列化/反序列化

#[derive(Serialize, Deserialize)]
struct Foo {
    bar: u32,
    baz: Vec<String>,
}

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

依赖关系

~1.4–3MB
~47K SLoC