I have a crate with both a binary and a library. The library is extremely light on dependencies, while the binary requires quite a bit more to, e.g., load files or do scoped parallel things.
Currently, I have my Cargo.toml set up like this:
[dependencies.kdtree]
path = "../kdtree"
[dependencies]
rand="0.3.0"
rustc-serialize = "0.3"
csv = {git = "https://github.com/BurntSushi/rust-csv.git"}
crossbeam = "0.2"
num_cpus = "0.2"
[lib]
name = "conformal"
path = "src/lib.rs"
[[bin]]
name = "ucitest"
path = "src/bin/main.rs"
The only dependencies the library needs are the kdtree
and rand
. However, it seems like even if you only build the library, it goes and builds the binary-only dependencies anyway. I've tried using features
and other tricks like [[bin].dependencies]
or [ucitest-dependencies]
(or adding a dependencies= []
line under [[bin]]
) that I thought might make them only build for the binary, but I can't find a way.
These aren't enough dependencies to make this a problem, but it's bothering me. Is there a way to narrow down dependencies so they only build for specific binaries?
Cargo.toml
files? You could always put the binary in a subdirectory and use the library from the parent directory (or a released version). – Shepmastertests
and usedev-dependencies
. – starblue