初学 Rust,考虑了许久,计划 Rust+Neon+Node.js+Electron 开发些东西玩一玩
不过在第一步配置环境上就踩了好多坑 😂 故分享出来……方便你们第一时间赶到现场嘲笑git
裂墙推荐 VS Code+WSL2,编辑器选择 VS Code 无话可说,至于环境为啥推荐 WSL2,缘由以下:github
关于以上第二点,本来我也用的 WSL1,前期一直很顺利,用 GDB 调试也很正常,不过换成 LLDB 以后死活启动不了调试器,遂斗胆换成了WSL2,而后嘛……真香json
虽然不知道自试用 WSL2 两个月以来发生了什么,可是目前的 WSL2 各方面感受都蛮优秀了curl
直接参考官方教程就好了,不过可能须要临时换个源来加速安装:编辑器
# 镜像加速,使用的是中科大的源,速度很快 export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup # 若是执意使用 WSL1,则可能须要设置这个 export RUSTUP_IO_THREADS=1 # 安装命令,后续选项通常默认就行了 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # 添加到 path source $HOME/.cargo/env # 我使用的是 fish 须要特别设置 set -U fish_user_paths ~/.cargo/bin $fish_user_paths # 更改 crates.io 为清华源,这里貌似要比中科大好一些,能够自行测试 cat > ~/.cargo/config [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = "ustc" [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" # <Ctrl+D>
更改工具链的源,添加以下内容到 ~/.cargo/config
文件中工具
[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" # 替换成任一镜像源 replace-with = 'tuna' # replace-with = 'ustc' # replace-with = 'sjtu' # replace-with = 'rustcc' # 清华大学 [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" # 中国科学技术大学 [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" # 上海交通大学 [source.sjtu] registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" # rustcc社区 [source.rustcc] registry = "git://crates.rustcc.cn/crates.io-index"
须要注意的是,尽可能不要直接修改 ~/.cargo/config
文件,可能会由于换行符致使 cargo 没法读取……可使用以下命令导入测试
cat >> ~/.cargo/config # 这里粘贴你的配置文件 [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = 'ustc' [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" # 按下 Ctrl+D 结束
在 VS Code - WSL2 中安装以下扩展:url
关于 CodeLLDB,若是使用 WSL1 或者不想用 LLDB 调试的话,能够安装 C/C++ 扩展,而后使用 GDB 进行调试。spa
新建个项目看下效果:.net
注意:第一次打开 .rs 文件时,VS Code 右下角会提示安装工具链,确认安装就行了,这一步最好已配置好国内源,否则会慢死……
而后 运行 → 打开配置 CodeLLDB 会检测到 .toml 文件,自动生成 launch.json 配置,加点儿代码,放个断点,最后 F5 调试,大功告成!