Tips

    Recovering Storage Space 🔗

    • Sharing a Cargo Build Folder
    • Remove unused toolchains (Recovered about 4gb removing 1.58.1, 1.61, 1.65, 1.70 and 1.71)
      • See list of toolchains rustup toolchain list
      • Remove a toolchain rustup toolchain uninstall <VALUE FROM LAST LIST>
    • Cargo Sweep (Suggested by Conrad Ludgate)
    • [Not tested yet] Run cargo clean on all projects find ~ -type d -name target -exec sh -c 'cd {} && cd .. && cargo clean' \ from timClicks notes

    Sharing a Cargo Build Folder 🔗

    Sources:

    Back story on why I looked into this in the first place

    Over time I’d worked on several projects, and compiled many more that I was looking into and after a while I noticed that the folder where I kept my projects was several gigs larger than I expected. So, I checked what the largest folders were and noticed all of them were target folders in rust projects. I needed the space at the time so I manually cleaned it up. Time passed and it built up again… so needed a better solution. I remembered that Jon Gjengset used a shared build folder from one of his streams and inquired if he’d run into any issues. Based on him not having had any issues using it I decided to try it and found that it worked out pretty well for me.

    It has made it much easier to see how much space is being used by the build folder and much easier to delete it if needed. It also reduce the total size as multiple projects that required the same crates wouldn’t each need to have their own copy which sped up build times and saved space.

    I’ve since heard of cargo sweep from Conrad Ludgate. I found this relevant post while looking for the project’s crate.io page.


    Cargo looks for a folder called .cargo in the project folder or a parent folder then a file called config.toml and inside of that build.target-dir to determine what build folder to use. By default this is just target which uses a folder called target in the root of the project but instead you can create a shared .cargo folder above where you have your projects and set one folder for them all to share.

    For example it could be something like below. Note comment is only there to show where file goes not actually needed in file.

    # .cargo/config.toml
    [build]
    target-dir = "/home/one/build/cargo/target"