生產環境選哪一個 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