Rust 库

本文档介绍了可用于在 Rust 中写入和读取 Inspect 数据的库。 如需了解每个库的具体文档,请参阅每个部分中链接的 crate 文档。

用于写入 Inspect 的库

fuchsia-inspect

这是核心库。此库提供了用于创建节点、属性、 提供 Inspect 等的核心 API。在内部,它实现了 Inspect vmo 格式中所述的伙伴分配算法。

如需了解 Inspect 概念和 Rust 库,请参阅 Codelab。

inspect-runtime

此库使组件能够提供 Inspect 并使其可供 Archivist 收集。

它仅供组件二进制文件使用,不供库使用。原因是此库提供了一个 expect_includes 检查,用于验证组件清单是否配置为公开 Inspect。

避免从库依赖于 inspect-runtime,这样测试就不会被迫添加 Inspect client.shard.cml。

fuchsia-inspect-contrib

此库提供了由 Inspect 客户端贡献的更高级别的模式和实用程序,以简化常见的日志记录和数据结构:

  • 有界事件日志记录:BoundedListNode 管理 固定容量的子节点 FIFO 列表,并在列表已满时自动逐出较旧的 条目。

  • 带时间戳的事件日志记录:inspect_log! 宏 将结构化事件记录到 BoundedListNode,并自动注入 @time 启动 时间戳。

  • 时间属性:NodeTimeExt 提供便捷 方法,用于在 Inspect 节点上记录和管理启动和单调时间戳。

  • 诊断缓存:LruCacheNode 和 DedupeLogNode 有助于 缓存和重复数据消除诊断数据。

fuchsia-inspect-derive

此库提供了一种通过 #[derive(Inspect)] 过程宏在 Rust 程序中管理 Inspect 数据的便捷方式。它比 fuchsia-inspect 更高级别。 如需详细了解此库,请参阅符合人体工程学的 Inspect。

用于读取 Inspect 的库

这些库并非特定于 Inspect,而是用于各种诊断数据。

diagnostics-hierarchy

此库包含便捷的宏 assert_data_tree,用于测试以及 DiagnosticsHierarchy 的定义,后者并非 Inspect 独有,也用于日志和其他诊断数据源。

diagnostics-testing

此库包含便捷的 EnvForDiagnostics,这对于测试 Inspect 与旧版组件的集成非常有用。

diagnostics-reader

此库包含便捷的 ArchiveReader,这对于在测试或生产环境中从 Archivist 提取 Inspect 数据非常有用。它封装了连接到 ArchiveAccessor 并从中提取数据的共享逻辑。

其他

inspect_format

此库提供了一个用于读取和写入 Inspect VMO 格式块的 API。