#lua #configuration

lua-config

使用 lua 的简单 Rust 配置工具

11 个稳定版本

新版本 1.4.2 2024 年 8 月 15 日
1.3.0 2024 年 8 月 14 日
1.2.1 2024 年 8 月 14 日
1.1.2 2024 年 8 月 13 日
1.0.1 2024 年 8 月 12 日

#102 in 配置

Download history 1079/week @ 2024-08-10

1,079 每月下载量

MIT 许可证

18KB
363

Rust Documentation Latest version License

lua-config

使用 lua 的简单 Rust 配置工具。

想法

我一直很难配置我的 Rust 应用程序。我想尝试将 lua 作为配置工具,因为我可以在读取配置的同时执行一些逻辑。例如

function Config()
	local config = {
		width = 800,
	}
	config.height = config.width * 3 / 4

	return config
end

如你所见,height 值根据 width 动态计算。

如何使用

使用 cargo add lua_config 安装。创建默认配置文件,例如

function Default()
	return {
		name = "My Game",
		width = 800,
		height = 600,
	}
end

然后创建您的配置文件。此文件应与应用程序放在同一目录下,如果您正在分发项目,您可能还想将此文件与应用程序一起分发。这可以通过手动操作或使用 build.rs 自动完成。例如

function Config()
	local config = {
		width = 1280,
	}
	config.height = config.width * 3 / 4

	return config
end

现在您可以在 Rust 代码中使用配置

fn main() {
    let config = lua_config::LuaConfig::from_file("config.lua")
        .expect("Failed to load config")
        .with_default(include_bytes!("../default_config.lua"))
        .expect("Failed to load default config")
        .execute()
        .expect("Failed to execute config");

    println!("Width: {}\n", config.get("width").unwrap().to::<i32>().unwrap());
    println!("Height: {}\n", config.get("height").unwrap().to::<i32>().unwrap());
    println!("Config:\n{}", config);
}

终端输出是

Width: 800

Height: 600

Config:
height = Number(600)
name = String("My Game")
width = Integer(800)

功能

crash_on_none

为了避免过多的 .unwrap(),您可以为 crash_on_none 添加功能。这样,get()to<T>() 函数将分别返回 LuaTypeT,而不需要 Option。在发生错误的情况下,库将触发恐慌。这是为了避免在各个地方使用 .unwrap(),并提供相同的结果。

贡献

欢迎拉取请求。对于重大更改,请先提交问题以讨论您想要更改的内容。

请确保适当更新测试。

许可证

MIT

依赖

~8–20MB
~301K SLoC