4个稳定版本
1.2.0 | 2023年11月25日 |
---|---|
1.1.0 | 2023年11月19日 |
1.0.1 | 2023年7月9日 |
1.0.0 | 2023年7月8日 |
#255 在 配置
867 每月下载量
用于 4 个Crates(3个直接使用)
59KB
1K SLoC
static-toml
轻松将TOML文件嵌入到Rust代码中作为静态数据,使用自定义数据结构。
关于
通过过程宏将TOML文件嵌入到Rust二进制文件中。该库允许在编译时包含TOML文件,并生成可以直接由Rust代码访问的静态数据结构,无需运行时解析。
主要功能
- 📝 无需努力嵌入TOML配置文件。
- 🔨 生成可靠的Rust数据结构来表示TOML内容。
- 🔧 使用前缀和后缀自定义生成的类型以实现灵活性。
- 🚦 享受清晰的编译时错误信息,便于调试。
使用方法
首先,请确保将 static-toml
添加到您的 Cargo.toml
依赖项中:通过命令行
cargo add static-toml
或直接添加到您的 Cargo.toml
中
[dependencies]
static-toml = "1"
然后,使用 static_toml!
宏来包含您的TOML文件
# message.toml
[info]
welcome = "Welcome to our application!"
update = "Your data has been updated successfully."
[errors]
file_not_found = "The requested file could not be found."
permission_denied = "You do not have permission to perform this action."
static_toml::static_toml! {
static MESSAGES = include_toml!("messages.toml");
}
const WELCOME_MESSAGE: &str = MESSAGES.info.welcome;
这将读取您的TOML文件并相应地生成Rust数据结构。现在您可以轻松访问TOML文件中的值。
除了使用 static
之外,static_toml!
宏还允许使用 const
来嵌入TOML数据。这在需要常量值的情况下特别有用,例如在const函数或const泛型中。要使用此功能,只需在需要时将宏调用中的 static
替换为 const
。
自定义选项
您可以配置宏如何生成数据类型
static_toml! {
#[static_toml(
prefix = Prefix,
suffix = Suffix,
root_mod = cfg,
values_ident = items,
prefer_slices = false
)]
static CONFIG = include_toml!("config.toml");
}
-
prefix
:在生成的数据类型前添加前缀。建议使用PascalCase
作为前缀。 -
suffix
:类似于前缀,但它是后缀。 -
root_mod
:设置包含TOML文件数据类型的根模块的标识符。 -
values_ident
:当为数组生成数据类型时,这指定了模块和数据类型的不同名称(默认为values
)。 -
prefer_slices
:确定宏是否应该为数组生成固定大小的切片。如果设置为false
,则将生成元组(默认值为true
)。
增强您的类型
您可以使用文档注释、派生属性和其他属性。此外,您还可以设置可见性。您的代码可以是整洁且描述性的。
static_toml! {
/// The configuration.
#[derive(Debug)]
#[allow(missing_docs)]
pub static CONFIG = include_toml!("config.toml");
}
错误处理
遇到编译错误?不用担心。static-toml
提供有关TOML解析或文件访问问题的 informative 错误消息。
示例
假设您有一个简单的TOML文件,如下所示
# config.toml
[database]
url = "localhost"
port = 5432
使用static_toml!
宏
static_toml! {
static CONFIG = include_toml!("config.toml");
}
就这样,您就有了可以使用Rust数据结构。
assert_eq!(CONFIG.database.url, "localhost");
assert_eq!(CONFIG.database.port, 5432);
依赖项
~1.1–1.8MB
~35K SLoC