套件速查 – Rust

資料結構

  • fixedbitset: Vec<bool>, [bool], Box<[bool]> 最佳化 (畢竟原本 bool 長度是 8 bit …),這個用起來比較簡單,沒事建議用這個
  • bitvec: Vec<bool>, [bool], Box<[bool]> 最佳化 (畢竟原本 bool 長度是 8 bit …),這個有更細的選項可以改,但用起來複雜得多 (有指令集最佳化,但最佳化什麼沒細看)
  • rstar: 多維空間索引
  • slab: 實現類似 slot 的儲存、分配觀念,用到 Vec<Option<T>> 時可能就是需要它
  • smallvec: 佔用記憶體未滿 8KB 的臨時 Vec,分配在 stack 上可能比分配在 heap 上快得多
  • str_stack: 短時間內分配大量字串的合併分配方式
  • rangemap: 範圍集,從多個範圍判斷某項資料是否在範圍內、動態增減範圍

編碼、解碼、解析、型態轉換

  • serde: 資料序列化、反序列化框架,包含 JSON, toml, query string 等各種格式
  • bincode: 資料序列化、反序列化,基於 serde 框架,資料結構依賴 struct 宣告(包含順序)
  • clap: 指令參數解析器
  • multipart: 處理 multipart/form-data
  • multer: async 處理 multipart/form-data

資料庫

  • r2d2: 資料庫連線池 (同步 API)
  • sqlx: async 資料庫 API

非同步、異步、async

  • mio: 整合多平臺的事件通知 API,比如 epoll
  • async-std: async runtime, async io, …
  • tokio: async runtime, async io, …

未分類

  • buf_redux: 更多功能的讀寫緩衝
    可以確保緩衝達到必要的資料量後才開始處理
    可快速實現可讀可寫緩衝
  • lazy_static: 讓靜態變數初始化流程限制更少,不限於 const fn
  • once_cell: 類似 lazy_static
  • libc
  • nix: 把 libc 中類 Unix 系統 API 整理過的版本
  • notify: 監視、通知檔案系統變動
  • bumpalo: 降低高頻率 heap 分配、釋放 (存活時間短) 的開銷
  • typed-arena: 同 bumpalo ,但只分配單一型態

其他整理的網站

  • https://lib.rs/

Related posts

套件速查 – *nix

容器

Kaniko - 不使用容器來建置容器映像檔,適用於在容器內建置容器映像檔的場景。

Podman - 類似 Docker,但執行時不需要 daemon 及 root 特權,對 Kubernetes 設定檔有更好的相容性。

套件速查 – Node.JS

未分類

zopfli: gzip 壓縮,費時但壓得更小,一次性壓縮用speakeasy: 兩步驗證(2FA)ffi: 動態引用 C 函式庫,建議搭配 ref 模組ref: 將 Buffer 轉換為 C 指標jumphash:...

Leave a Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *