生产环境选哪一个 Rust 序列化库?
序列化一直是 Rust 的强项,序列化库既成熟又快速。
特别是 Serde 在 Rust 1.0.0 发布以前就已经可用,其背后的理念是使用
trait
解耦对象,并从序列化格式中进行序列化/反序列化,这是一个很是强大的思想。格式编写者只需实现 Serde 的
trait
便可,而用户经过
#[derive(Serialize,Deserialize)]
对其对象进行序列化,而无需考虑格式。
固然有各类特定格式的库,这篇博客文章中,将在考虑 API 可用性和性能的状况下比较一些库。
博客文章
连接
,https://blog.logrocket.com/rust-serialization-whats-ready-for-production-today/
embedded-time 发布 v0.10
embedded-time,提供了一个完整的持续时间(Duration)和速率(Rate)类型库,以及硬件计时器/时钟的时钟(Clock)抽象以及嵌入式系统中的即时(Instant)类型。此外还提供了软件计时器的实现。
use embedded_time::{duration::*, rate::*};
let micros = 200_000_u32.microseconds(); // 200_000 ╬╝s
let millis: Milliseconds = micros.into(); // 200 ms
let frequency: Result<Hertz,_> = millis.to_rate(); // 5 Hz
assert_eq!(frequency, Ok(5_u32.Hz()));
crate
连接
,https://crates.io/crates/embedded-time
EBU R128 库 ebur128
ebur128 库,是EBU R128 标准的纯 Rust 实现。其是将 C 语言开发的 libebur128 库代码移植到了 Rust,在保持 API 和性能不变的同时,提供彻底相同的结果。
EBU R128,是欧洲广播联盟(European Broadcasting Union)出的一个关于响度(Loudness)控制的建议书(Recommendation),是用来通知广播公司如何分析和标准化音频,以使每段音频听起来与人耳的音量大体相同。
crate
连接
,https://crates.io/crates/ebur128
Github
连接
,https://github.com/sdroege/ebur128
Rust 中逼真的流体模拟
用户能够使用这些引擎模拟和渲染用 YAML 语言描述的场景。
Jan Bender 和 Dan Koschier 在该领域的论文《用于基于流体和固体的物理模拟的平滑粒子流体动力学技术》(Smoothed Particle Hydrodynamics Techniques for the Physics Based Simulation of Fluids and Solids),是对流体模拟的出色介绍。
Github
连接
,https://github.com/AudranDoublet/opr