#data #format #transfer #configuration #syntax #less #lsd

lsdata

LSD (Less Syntax Data) 配置/数据传输格式

1 个不稳定版本

0.1.0 2023年11月27日

#2007 in Rust 模式

MIT/Apache

33KB
790 代码行

LSD

这是 LSD (Less Syntax Data) 配置/数据传输格式的 Rust 实现。

这是第一个实现。如果在这个仓库中将来有任何其他实现,它们很可能是这个实现的副本。

安装

Cargo/Crates

将 LSD 添加到您的 Rust 项目的最主要方式是通过官方 crates.io 仓库。

命令

cargo add lsdata

Cargo.toml

精确版本(示例;如果此 README 没有更新,请从 crates.io 页面 复制)

lsdata = "0.1.0"

最新版(适用于快速个人项目,非生产环境)

lsdata = "*"

从 GitHub

您也可以让 cargo 直接从 GitHub 分支构建开发版 LSD。

命令

cargo add --git https://github.com/kirillsemyonkin/lsd.git

Cargo.toml

lsdata = { git = "https://github.com/kirillsemyonkin/lsd.git" }

从本地文件夹

如果您正在本地开发一个变体,您也可以参考它。

命令

cargo add --path path/to/lsd/rust

Cargo.toml

lsdata = { path = "path/to/lsd/rust" }

用法

一旦将 LSD 添加到您的 Rust 项目中,请在您的代码中使用 (use) 它

use lsdata::LSD; // Just LSD enum itself
use lsdata::LSD::*; // LSD variants (LSD::Level, LSD::List, LSD::Value)
use lsdata::key; // `key!` macro
use lsdata::*; // Import everything directly into your scope (except those variants)

有一个 parse 方法可供您使用

let file_lsd = LSD::parse(File::open("example.lsd")?)?;
let string_lsd = LSD::parse(Cursor::new("example Hello world!"))?; 

要访问值,需要准备好 key!

let lang_key = "rust";
let lang_name = lsd
    .value(
        key!["languages" lang_key "name"],
        || LanguageNameIsNotAValue,
    )?
    .ok_or_else(|| CouldNotFindLanguageName)?;

查看 文档 以了解 API 的更多信息。

计划

  • 保存到文件
  • serde 支持

依赖项

~1MB
~17K SLoC