3 个不稳定版本

0.2.0 2024年3月16日
0.1.1 2024年3月2日
0.1.0 2024年3月2日

492文本处理

Download history 24/week @ 2024-03-08 175/week @ 2024-03-15 17/week @ 2024-03-22 47/week @ 2024-03-29 31/week @ 2024-04-05 2/week @ 2024-04-12

139 每月下载量

MIT 许可证

380KB
10K SLoC

Release

这是一个旨在改善树视图和泛型代码 UX 的 Rust 文档 TUI。

此工具使用 nightly 编译器编译包的 JSON 文档。因此,请确保您的机器上可以使用 nightly 工具链。

建议您也安装 rust-docs-json,这样您就可以运行

rustup rustup toolchain install nightly --component rust-docs-json

# or add the component if nightly toolchain lacks it
rustup component add --toolchain nightly rust-docs-json
rustup update nightly

此工具非常不成熟,目前远未达到目标。它只提供编译和缓存文档的基本功能,以及查看 markdown 文档。

可以通过按 F1 键来找到快捷键或使用帮助。

help

更多屏幕截图可以在 这里 找到。

路线图

  • 项目大纲
    • 展开/折叠(基于模块树)
      • 展开零级项目(即在根模块中具有子模块折叠的项目)
      • 展开到第一级项目
      • 仅关注最新模块(但所有其他级别的模块都折叠)
      • 展开所有公共项目
    • 相关功能
  • 文档内容
    • 文本换行
    • 代码块中的语法高亮
    • 识别代码块上的 rustdoc 语法属性
      • 在链接中
      • 在代码块中(默认为 rust,隐藏行等)
  • 导航
    • markdown 大纲
    • 项目的相关项目/字段大纲
  • 包源 / Dashboard 弹出窗口
    • 本地
      • 本地注册源目录
        • 模糊搜索
        • 选择要编译文档的包并将在本地数据库文件中缓存工件
      • 数据库中的缓存(已生成的 json 文档将缓存在本地的数据库中)
        • 缓存原始 JSON 输出并通过 xz 压缩
        • 缓存解析后的输出以实现更快加载并通过 xz 压缩
        • 对所有项目或按组排序缓存列表
      • 本地路径到 Cargo.toml:低优先级
    • 非本地(即从网络下载包):低优先级
  • 配置
    • 主题:低优先级
    • 快捷键:低优先级
  • 模糊搜索
    • 按项目名称
    • 按所有文档内容
    • 按函数/方法签名
      • 在具体类型上
      • 关于泛型类型
      • 关于特性界限
    • 通过 crate 功能
  • 泛型类型增强
    • 泛型类型参数
      • 列出满足特性界限的具体候选类型
        • 当前包内部
        • 数据库缓存内部
      • 列出函数/方法
        • 返回具有相同特性界限的泛型类型
        • 返回具体候选类型
      • 列出函数/方法
        • 接受具有相同特性界限的泛型类型
        • 接受具体候选类型
    • 生命周期参数
      • 变异性(JSON文档中可能没有此信息,但可能并不难实现)
  • 具体类型
    • 列出方法,其中具体的 Type 及其所有权变体 &Type / &mut Type
      • 接收器类型
      • 参数类型
      • 返回类型
  • 特性
    • 按所有权(impl Trait for Type vs &mut Type vs &Type vs Box<Type>)
      • 按具体类型与泛型类型
      • 杂项/基础知识

crates.io 上的数据访问策略

主要借鉴自 id_from_item_inner

IMPL

[CRATE_ID:]ITEM_ID:NAME_ID[:EXTRA][-impl]:

  • 用于自动实现
    • a: 用于自动实现
    • b: 用于泛型实现
    • 如果为其他类型,如非实现、固有实现、正常特性实现则留空
  • name 是如果有的话项的名称(例如,它不适用于实现块)。
  • extra 用于重导出:它包含重导出项的 ID。它用于允许具有相同名称但不同类型的项同时出现在生成的 JSON 中。

依赖项

24–37MB
~554K SLoC