2个稳定版本
1.0.1 | 2024年4月10日 |
---|---|
1.0.0 | 2024年4月7日 |
#615 in 过程宏
每月 49 次下载
60KB
1K SLoC
SimpleML宏
这个crate是simpleml的扩展。它创建了一个“sml”宏,允许你在代码中声明基于SML的配置。
更新日志
1.0.1
用法
为了使用此宏,将以下内容添加到你的Cargo.toml中。注意:此宏需要nightly编译器的proc_macro_span功能。
[dependencies]
tree_iterators_rs = "1.2.1"
simpleml = "1.0.0"
simpleml_macro = "1.0.0"
一旦放置好这些依赖项,只需添加对宏的使用,并在你的代码中使用它。以下示例来自simpleml的README.md文件中的内联SML数据结构声明。
之前
use tree_iterators_rs::prelude::*;
use simpleml::{SMLWriter, SMLElement, SMLAttribute};
let my_sml_values = TreeNode {
value: SMLElement {
name: "Configuration",
attributes: Vec::with_capacity(0),
},
children: Some(vec![
TreeNode {
value: SMLElement {
name: "Video",
attributes: vec![
SMLAttribute {
name: "Resolution",
values: vec![Some("1280"), Some("720")],
},
SMLAttribute {
name: "RefreshRate",
values: vec![Some("60")],
},
SMLAttribute {
name: "Fullscreen",
values: vec![Some("true")],
},
],
},
children: None,
},
TreeNode {
value: SMLElement {
name: "Audio",
attributes: vec![
SMLAttribute {
name: "Volume",
values: vec![Some("100")],
},
SMLAttribute {
name: "Music",
values: vec![Some("80")],
},
],
},
children: None,
},
TreeNode {
value: SMLElement {
name: "Player",
attributes: vec![SMLAttribute {
name: "Name",
values: vec![Some("Hero 123")],
}],
},
children: None,
},
]),
};
之后
use simpleml_macro::sml;
let my_sml_values = sml!{
Configuration
Video
Resolution 1280 720
RefreshRate 60
Fullscreen true
my_custom_end_keyword
Audio
Volume 100
Music 80
my_custom_end_keyword
Player
Name "Hero 123"
my_custom_end_keyword
my_custom_end_keyword
};
依赖项
~2.5MB
~11K SLoC