Rust开发中无法下载某个GitHub文件的一种解决办法

Rust开发中无法下载某个GitHub文件的一种解决办法

01 前言

使用Rust进行开发时,有时候依赖一些库,运行起来时就会动态去下载一些GitHub文件,而由于众所周知的原因,网络经常是不给力的,因此不得不另想其他办法。
比如在使用trunk时,首次运行trunk serve --open,如果涉及到wasm-bindgentailwindcss的使用,本地版本不对应的话就会去GitHub下载对应版本。
经常苦恼于无法正常从GitHub进行下载资源的同学,应该知道有一些网站可以加速下载,也就是利用这个方式来处理。记录一下,抛砖引玉。

02 正文

环境:

Windows 11 64-bit
VS Code 1.95.3
rustup 1.27.1 (x86_64-pc-windows-msvc)
cargo 1.82.0
trunk 0.21.2

项目使用了Leptos框架(官网)的CSR模式,涉及到wasm-bindgentailwindcss,以运行trunk serve --open为例

2-1 问题定位

  • 根据错误日志,定位到实际的下载行为发生在哪个库(可能要反复找多次)

这里因为直接运行了trunk相关的命令,所以先将目标定为trunk这个库。

2-2 找到源码位置

根据环境变量CARGO_HOME设置的位置,找到对应库的源码目录。
假设CARGO_HOME的值为:C:\cargo_home
那么找到目录C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX
其中XX表示任意的数字或字母,每台机器的环境可能是不同的,以实际的为准。

Windows用户可以在CMD中执行以下命令,输出CARGO_HOME的值:

echo %CARGO_HOME%

2-3 搜索关键词

在源码所在的目录,以关键词:https://github.com 搜索所有.rs文件的内容,看哪些.rs文件中出现了关键词。
至于如何搜索所有的文件内容,那就是各显神通了,可以用一些记事本软件,或者脚本实现。

Windows用户可以在CMD请替换为实际的源码目录)中执行以下命令,找到包含关键词的.rs文件:

cd /d C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX
powershell.exe -command "dir -Filter '*.rs' -File -Recurse | Where-Object{ [string]::Join('',(Get-Content -Path $_.FullName)).Contains('https://github.com') } | ForEach-Object {$_.FullName}"

这里输出了两个文件:

C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX\src\tools.rs
C:\cargo_home\registry\src\index.crates.io-XX\trunk-XX.XX.XX\src\common\html_rewrite.rs

逐一查找,联系上下文代码,最后确定了,在tool.rs中:
位置

这里有一堆GitHub相关的下载URL,在https://github.com/前面加上可用的加速地址(可自行搜索),如:
修改后
可以全部修改或只改本地环境对应的URL。因为是Windows下开发,所以这里只改了"windows", "x86_64"的URL。

2-4 修改并重新编译

修改后完成,保存文件,重新编译安装trunk,因为是在本地修改了源码,所以只能进行离线编译,运行以下命令:

cargo install trunk --offline --force

编译并安装成功,然后重新运行:trunk serve --open启动项目,可以看到能够加速下载Github的资源了,完美解决。

03 后记

麻烦一点,也算是一种可用的办法,供大家参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值