Rune是一个 Rust 可以嵌入的动态语言. 使用 Rust 编写, 基于 Runestick VM. 你可以认为他是 Rust 中的 Luna,但是语法是类 Rust 的.? opearatorvectors, objects, tuples 和内置 serde 支持.async支持.The Rune Programing Language: https://rune-rs.github.io/rune/foreword.htmlRune github: https://github.com/rune-rs/runeEnumsStructOptderive宏来处理命令行参数 非常棒的 crate.Result和anyhowResult 和 ? 操作符让我们可以非常优雅的处理错误. 结合 anyhow 这个 crate 会非常容易的处理错误.SerdeSerde 可以让你非常方便的序列化和反序列化你的结构体.DropDrop trait可以允许我们再在 struct 失去作用范围的时候运行desctructor. 当程序退出的时候, vopono用他来自动销毁一些临时的 network namespace.Cargoinclude_str宏include_str宏可以在编译期间将硬盘上的文件作为静态 string 加载编译到 binary 中.RustlsRustls是一个TLS库,可以用来替代 OpenSSL.musl和静态链接x86_64-unknown-linux-musl target可以用来做(交叉)编译,静态的连接到musl而不是默认的glibc.Linus Torvalds也有这么一台)了.210s |
23s |
|
2,640s |
213s |
Serde 数据模型下的一个 query language.use serde_query::{DeserializeQuery, Query};
#[derive(DeserializeQuery)]
struct Data {
#[query(".commit.authors.[0]")] // query 部分数据
first_author: String,
#[query(".hash")]
hash_value: u64,
}
let document = serde_json::to_string(&serde_json::json!({
"commit": {
"authors": ["Kou", "Kasumi", "Masaru"],
"date": "2020-09-10",
},
"hash": 0xabcd,
}))?;
let data: Data = serde_json::from_str::<Query<Data>>(&document)?.into();
assert_eq!(data.first_author, "Kou");
assert_eq!(data.hash_value, 0xabcd);
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。