卡卷网
当前位置:卡卷网 / 每日看点 / 正文

Rust是不是没办法离线开发?

作者:卡卷网发布时间:2024-11-30 16:01浏览数量:114次评论数量:0次

我们开发团队遇到过类似的问题:

因为公司有防火墙,只准许你看网页、查资料,但是不准许开发工具(vscode)联网......
我们从别处构建了一个包含所有 Cargo 依赖项的 docker 镜像,然后部署到这个 “没网” 的开发环境中。
结果使用 vscode 的时候,报 rust-analyzer failed to load workspace: xxxx

除了这种从一开始就没网的,还有一种情况:

有网时一切正常,一但断网(甚至网络不好,比如在地铁、高铁上),这时运行 rust-analyzer 的时候就会报 Failed to run "cargo"、"metadata"......
具体报错记不清了,大致如此吧。

当时查了一些资料,因为比较久远了,所以只能给你提供一些思路和关键字:

rust-analyzer 本身不需要联网,但它在加载 workspace 的时候会要求 cargo 提供 metadata,而 cargo 默认需要从 registry server 上下载 crates,你过不了 cargo check,那就啥也干不成......

这时,你可以自己搞个 crates mirror,可以参考这篇:Dissecting Crates.io: Bare Minimum Mirror

Rust是不是没办法离线开发?  第1张

构建一个最低限度的镜像

或者弄一套 local-registry,可以参考这个:GitHub - dhovart/cargo-local-registry: A cargo subcommand to manage local registries

Rust是不是没办法离线开发?  第2张

重定向到本地存储的 registry

再不济,直接 hack 掉 Cargo.lock,可以参考这个:github.com/oconnor663/d

Rust是不是没办法离线开发?  第3张

我们当时的方法是:

  1. 在终端中执行 cargo check --all-targets --offline(细心的话,你会发现上面那个 hack 方法的作者在注释里也提到了);
  2. 或者在 .cargo/config.toml 中添加 offline:

Rust是不是没办法离线开发?  第4张

很多细节记不清了,后来我也没参与过 rust 项目,所以仅供参考。

理论上,方法总是比困难多的,别灰心~

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码