Skip Navigation

Do people use Cargo?

I really like the idea of a package/dependency manager. It just seems that when ever I am reading a tutorial and they want to import something that is not standard they say write this in to your TOMOL not cargo install it. Like when reading python docs they all say to use pip or something. Sorry it just seems that Cargo is somewhat overlooked or is it just my perception?

10 comments
  • cargo install installs a rust binary to your user space.

    cargo add adds the dep to your project by editing your Cargo.toml.

  • The file is named Cargo.toml. Whatever dependencies you add to there are automatically downloaded by Cargo. You can manage them with cargo add and cargo remove.

    cargo install is not the same thing. That installs binaries. I last installed cargo-release to automate the annoying part of managing git tags and crate version number.

  • Presumably you're using an IDE or smart text editor to run your code. Otherwise you'd be running e.g. cargo build and cargo test from the command-line quite often.

    The difference to Pip is that Cargo detects changes in the Cargo.toml and will automatically install all the necessary dependencies, when you run cargo build or cargo test (or other similar commands). And since your IDE / editor runs these for you, it looks to you like you're just editing a text file.

    It should also be said that Pip has a somewhat unusual workflow in that you pip install everything, which would normally install it globally into your operating system. And then with venv, you kind intercept that to install it into the .venv/ folder in your repo instead.
    This workflow doesn't make a ton of sense, if you always have a repo folder where the dependencies can be installed into, so Rust just doesn't do it that way.
    (In particular, installing dependencies globally quickly causes issues when different projects have different version requirements for the same library.)

    There is a cargo install command, but it's only for installing applications, not libraries.

    • cargo install is for installing rust programs for your user, not for adding dependencies to your Rust project. Many cargo subcommands can be installed this way, for instance cargo bloat.
    • The file you are talking about is called Cargo.toml, because it is the file you need to write in order to configure cargo for your Rust project. TOML is the name of the file format. For details, please see the introductory chapter to Cargo in the Rust book.
    • Cargo recently got a new subcommand called cargo add, which allows to add dependencies directly on the command line. However, all it does is to add/edit/remove the respective lines in Cargo.toml. (Personal opinion: I have found it way easier to just edit the file directly than to learn yet another command...)

    That said: You still need to edit the Cargo.toml file, even if you solely use cargo add to manage your dependencies. That's because that file contains a lot more information about your project than just the dependencies. For instance the current version, the feature-flags, your name, a link to the public repo,...

10 comments