如何快速掌握新的 crates?

快速掌握新 crates 的方法

如何判断一个 crate 的质量?

  • crates.io 下载量 / dependents 数量 / github star
  • 更新频率
  • 其 dependency 的质量(是否较新)
    • 比如 crate 还依赖 futures < 0.3 / tokio < 1 不值得尝试
  • README / docs.rs / 测试 / 示例代码 / 源代码

快速尝试 crates 的方法

  • 带着问题
  • 快速阅读文档(why,what,how)
  • 了解相关的知识(包括 ecosystem)
  • clone repo
  • 尝试 example(并用自己的方式实现某些 example)
  • 阅读源码

示例:polars

示例:headless_chrome

比较 polars 和 headless_chrome

  • 大概代表了我们会使用的 crates 的两级
  • 代码量:polars(50k vs 8k)
  • 学习曲线:polars(背景知识多)
  • 文档质量:都一般
  • 容易上手:headless_chrome

Rust 生态中值得关注的 crates

极简版,且不包含 are we xxx yet 页面提及的 crates

FFI 相关

macro 相关

并发处理

parser

日志,追踪

其它

Live coding:构建一个命令行工具

  • 工具:clap,rust-headless-chrome,qrcode-rust
  • 思路:
    • clap 提供基本命令行 web2image <url> --output <path:/tmp/screenshot.jpg>
    • 使用 headless_chrome 抓取 url,存储为图片
    • 使用 qrcode-rust 对 URL 生成 QR code,添加到图片中

Learning

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("unknown variant `marker`, expected one of `first-line`, `first-letter`, `before`, `after`, `backdrop`, `selection`, `first-line-inherited`, `scrollbar`, `scrollbar-thumb`, `scrollbar-button`, `scrollbar-track`, `scrollbar-track-piece`, `scrollbar-corner`, `resizer`, `input-list-button`", line: 0, column: 0)', /Users/tchen/.cargo/registry/src/github.com-1ecc6299db9ec823/headless_chrome-0.9.0/src/protocol/mod.rs:90:70
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

参考资料