#toml #validation #read-file #string #value #valid #applications

valid_toml

提供加载并验证TOML文件的能力

2个版本

使用旧的Rust 2015

0.0.2 2016年6月12日
0.0.1 2016年6月12日

#64 in #valid

AML/Apache-2.0

170KB
3K SLoC

这个crate为TOML文件提供验证,以确保从文件中读取的值适用于应用程序。

目前该crate仅支持从TOML文件中读取字符串、usize、u16和持续时间元素。usize和u16元素是对TOML数字的基本定制,其范围限制在有效值内。同样,持续时间元素是格式为"##d ##h ##m ##s ##ms"的特殊字符串。

计划添加更多数据类型,但到目前为止,我只创建了读取配置文件所需的数据类型。

给定一个TOML文件,例如

threads = 16

[database]
host = "localhost"
port = 5432

您可以使用以下代码访问数据

use valid_toml::{TomlDef, ItemStr, ItemUsize, ItemU16};

# fn main() {
let mut def = TomlDef::new()
    .add(ItemUsize::with_name("threads").min(1).max(32).default(4))
    .add(TomlDef::with_name("database")
        .add(ItemStr::with_name("host").default("localhost"))
        .add(ItemU16::with_name("port").default(5432)));

// Load the contents of the TOML file into the string "file" and call
// TomlDef::parse_toml::<T:AsRef<str>>(input : T ) to parse it.  Or just call
// TomlDef::load_toml::<P : AsRef<Path>>(file : P ) to have the crate load it.
match def.parse_toml(file) {
    Ok(data) => {
        assert_eq!(data.get_usize("threads"), 16);
        assert_eq!(data.get_str("database.host"), "localhost");
        assert_eq!(data.get_u16("database.port"), 5432);
    },
    Err(issues) => {
        println!("Error reading the configuration file: ");
        for err in issues.errors.iter() {
            println!("    {}", err);
        }
    }
}

依赖项

~595KB
~12K SLoC