adder相当于main函数
add-one是lib
二者位于addr之中

cargo工作空间

  • 不使用cargo new 的方法来创建,使用以下命令:
1
2
3
mkdir addr
cd addr
vim Cargo.toml #创建cargo文件
  • 工作空间设置
1
2
3
4
5
// addr/Cargo.toml
[workspace]
members = [
"adder",
]

工作目录如下:

1
2
Cargo.toml
adder
  • 创建新的包adder
1
2
# 在addr文件夹中
cargo new adder
  • 运行cargo build
1
2
# 在addr文件夹中
cargo build

此时出现如下目录

1
2
3
4
5
6
7
8
Cargo.toml
Cargo.lock
adder------------
|
------Cargo.toml
|
------src
target

Cargo工作空间添加新的lib库

  • 在工作空间添加add_one --lib
1
2
3
4
5
6
//Cargo.toml
[workspace]
members = [
"adder",
"add_one",
]
  • 此时使用cargo new
1
2
3
# 添加add-one库
# 位于addr之中
cargo new add_one --lib
  • 添加函数到add_one之中
1
2
3
4
5
6
7
8
9
10
11
// addr/add-one/src/lib.rs
pub fn add_one(x: i32) -> i32 {
x + 1
}
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2+2,4);
}
}

使用

  • 添加路径
1
2
3
4
5
6
7
8
9
10
# 进入adder的Cargo.toml
# addr/adder/Cargo,toml
[package]
name = "adder"
version = "0.1.0"
authors = ["andy"]
edition = "2018"

[dependencies]
add_one = {path = "../add_one"}
  • 使用
1
2
3
4
5
6
7
8
//addr/adder/src/main.rs
use add_one;

fn main() {
let num = 10;
let r = add_one::add_one(num); //调用add_one包下的add_one函数
println!("r = {}",r);
}

之后使用:

1
2
# 位于addr中
cargo build

最后进行运行:

1
2
# addr之中
cargo run -p adder