- SignalDesk2小时前
Original Summary
注意,以下的配置适用于 Linux,且推荐至少内存 >= 32G 时使用,以及请检查一下 /tmp 是否是 tmpfs 文件系统,这是使用内存放编译目录的前提 Rust 的编译产物 target 文件夹非常庞大,频繁编译项目时总是担心对硬盘的消耗,于是乎就有了下面的配置优化,先安装需要的包。 # Ubuntu/Debian 使用 sudo apt install sccache # Fedora 使用 sudo dnf install sccache ~/.cargo/config.toml [build] rustc-wrapper = "sccache" 使用 sccache 来将编译产物缓存到硬盘,加速重启电脑后的重新编译。 ~/.config/fish/functions/cargo.fish function cargo --wraps=cargo --description 'Build Rust projects in /tmp with sccache' set -l project_root (git rev-parse --show-toplevel 2>/dev/null; or pwd) set -l project_name (basename "$project_root") set -lx CARGO_TARGET_DIR "/tmp/cargo-target/$project_name" set -lx CARGO_INCREMENTAL 0 command cargo $argv end 这个配置在 Fish Shell 才可用,包装 cargo 命令,识别当前工作目录并自动使用 /tmp/cargo-target/ 下的子目录作为 Cargo 的 TARGET 目录。 ~/.local/bin/ra-wrapper #!/usr/bin/env bash PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) PROJECT_NAME=$(basename "$PROJECT_ROOT") export RUSTC_WRAPPER="" export CARGO_INCREMENTAL="1" export CARGO_TARGET_DIR="/tmp/ra-target/${PROJECT_NAME}" exec rust-analyzer "$@" 一个 rust-analyzer 的命令包装,识别当前工作目录并自动使用 /tmp/ra-target/ 下的子目录作为 rust-analyzer 的 TARGET 目录。 这里目录使用与 cargo 不同的目录可以防止两者并发时抢锁。 ~/.config/helix/languages.toml [language-server.rust-analyzer] command = "ra-wrapper" 配置 Helix 编辑器在使用 rust-analyzer LSP 服务器时使用自定义的 ra-wrapper 作为命令入口。 验证是否生效 cargo build && cargo clean && cargo build sccache --show-stats | grep -E 'Cache hits|Cache misses' du -sh /tmp/cargo-target/* df -h /tmp 第二次编译时应命中缓存。 大功告成 这样一来就实现了在 Fish Shell 下使用 Cargo 运行编译项目和 rust-analyzer 运行时使用 /tmp 内存盘,重启即清空,不消耗硬盘。 1 个帖子 - 1 位参与者 阅读完整话题
- 情报分类:服务器与云资源
- 分类依据:内容涉及服务器、云资源或网络线路
- 信息来源:服务器 / LINUX DO - 最新话题
- 发布时间:2026/10/18 16:27:39
- 暂无回复