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 配置
1,079 每月下载量
18KB
363 行
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>()
函数将分别返回 LuaType
和 T
,而不需要 Option
。在发生错误的情况下,库将触发恐慌。这是为了避免在各个地方使用 .unwrap()
,并提供相同的结果。
贡献
欢迎拉取请求。对于重大更改,请先提交问题以讨论您想要更改的内容。
请确保适当更新测试。
许可证
依赖
~8–20MB
~301K SLoC