【Rust】ワークスペースによるパッケージ管理

$ mkdir add
$ cd add

Cargo.toml

[workspace]

members = [
    "adder",
]

$ cargo new –bin adder
$ tree
.
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── Cargo.toml

$ cargo new add-one –lib
$ tree
.
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── add-one
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
└── Cargo.toml

pub fn add_one(x: i32) -> i32 {
    x + 1
}

adder/Cargo.toml

[dependencies]
add-one = {path = "../add-one"}

adder/src/main.rs

extern crate add_one;

fn main() {
    let num = 10;
    println!("Hello, world!{} plus one is {}!", num, add_one::add_one(num));
}

$ cargo run
Compiling add-one v0.1.0 (/home/vagrant/dev/rust/add/add-one)
Compiling adder v0.1.0 (/home/vagrant/dev/rust/add/adder)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.15s
Running `target/debug/adder`
Hello, world!10 plus one is 11!

なるほど、ワークスペースを使ってパッケージ管理してるのか!