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?
The file is named Cargo.toml. Whatever dependencies you add to there are automatically downloaded by Cargo. You can manage them with
cargo add
andcargo 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.cargo install
installs a rust binary to your user space.cargo add
adds the dep to your project by editing yourCargo.toml
.Almost everyone uses Cargo. I think the only people that don’t are Google and Facebook who will probably be using Bazel or Buck2. I think you’re a bit confused about what Cargo is.
Cargo is heavily used.
Your tutorial is the odd one.
cargo add <dep>
is a relatively new command. For a long time you had to edit the Cargo.toml file to add a new dependency. So a lot of tutorials still use that as a way of adding a dependency. And other guides often copy from the older ones. They also can describe it this way as a way to introduce the Cargo.toml structure since it is not hard to hand edit.cargo add
is just a convenience after all and it is still worth understanding the Cargo.toml structure.But yes, many people do use
cargo add
for simply adding deps rather than editing the toml file. Though it is not uncommon to edit it by hand either.Presumably you’re using an IDE or smart text editor to run your code. Otherwise you’d be running e.g.
cargo build
andcargo 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 runcargo build
orcargo 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 withvenv
, 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.