Rust 程式庫

本文說明可使用哪些程式庫,在 Rust 中寫入及讀取 Inspect 資料。如需各程式庫的專屬說明文件,請參閱各節連結的 Crate 說明文件。

用於編寫檢查作業的程式庫

fuchsia-inspect

這是核心程式庫。這個程式庫提供核心 API,用於建立節點、屬性、提供檢查服務等。在內部,這個程式庫會實作「檢查 VMO 格式」一文所述的夥伴分配演算法。

如要瞭解檢查概念和 Rust 程式庫,請參閱程式碼研究室

inspect-runtime

這個程式庫可讓元件提供檢查服務,並供 Archivist 收集。

它僅供元件二進位檔案使用,不適用於庫檔案。這是因為這個程式庫提供 expect_includes 檢查,可驗證元件資訊清單是否已設定為公開檢查。

請避免從程式庫依附 inspect-runtime,以免測試被迫新增檢查 client.shard.cml

fuchsia-inspect-contrib

這個程式庫提供 Inspect 用戶提供的較高層級模式和公用程式,可簡化常見的記錄和資料結構:

  • 有界事件記錄BoundedListNode 管理子節點的固定容量先進先出清單,並在清單已滿時自動清除較舊的項目。

  • 記錄含時間戳記的事件inspect_log! 巨集會將結構化事件記錄到 BoundedListNode,並自動插入 @time 啟動時間戳記。

  • 時間屬性NodeTimeExt 提供便利的方法,可在檢查節點上記錄及管理啟動和單調時間戳記。

  • 診斷快取LruCacheNodeDedupeLogNode 可協助快取及重複資料刪除診斷資料。

fuchsia-inspect-derive

這個程式庫提供便利的方式,透過 #[derive(Inspect)] 程序巨集管理 Rust 程式中的檢查資料。這項功能的運作層級高於 fuchsia-inspect。 如要進一步瞭解這個程式庫,請參閱「Ergonomic Inspect」。

用於讀取檢查結果的程式庫

這些程式庫並非 Inspect 專用,而是用於各種診斷資料。

diagnostics-hierarchy

這個程式庫包含方便測試的巨集 assert_data_tree,以及 DiagnosticsHierarchy 的定義 (不限於檢查,也用於記錄和其他診斷資料來源)。

diagnostics-testing

這個程式庫包含實用的 EnvForDiagnostics,可測試 Inspect 與舊版元件的整合。

diagnostics-reader

這個程式庫包含方便使用的 ArchiveReader,可從測試或正式環境中的封存工具擷取檢查資料。這個函式會包裝連線至 ArchiveAccessor 並從中擷取資料的共用邏輯。

其他

inspect_format

這個程式庫提供的 API 可用於讀取及寫入 Inspect VMO 格式的區塊。