diff --git a/src/ch14-03-cargo-workspaces.md b/src/ch14-03-cargo-workspaces.md
index 06490b8..da5fb44 100644
--- a/src/ch14-03-cargo-workspaces.md
+++ b/src/ch14-03-cargo-workspaces.md
@@ -142,73 +142,6 @@ Hello, world! 10 plus one is 11!
这会运行 *adder/src/main.rs* 中的代码,其依赖 `add-one` crate
-
-
-接下来,在 `adder` 目录中生成 `add-one` crate:
-
-```text
-$ cargo new add-one
- Created library `add-one` project
-```
-
-现在 `adder` 目录应该有如下目录和文件:
-
-```text
-├── Cargo.toml
-├── add-one
-│ ├── Cargo.toml
-│ └── src
-│ └── lib.rs
-└── src
- └── main.rs
-```
-
-在 *add-one/src/lib.rs* 中增加 `add_one` 函数的实现:
-
-文件名: add-one/src/lib.rs
-
-```rust
-pub fn add_one(x: i32) -> i32 {
- x + 1
-}
-```
-
-打开 `adder` 的 *src/main.rs* 并增加一行 `extern crate` 将新的 `add-one` 库引入作用域,并修改 `main` 函数来调用 `add_one` 函数,如示例 14-12 所示:
-
-```rust,ignore
-extern crate add_one;
-
-fn main() {
- let num = 10;
- println!("Hello, world! {} plus one is {}!", num, add_one::add_one(num));
-}
-```
-
-示例 14-12:使用来自 `adder` crate 的库 crate `add-one`
-
-在 *adder* 目录下运行 `cargo build` 来构建 `adder` crate!
-
-```text
-$ cargo build
- Compiling add-one v0.1.0 (file:///projects/adder/add-one)
- Compiling adder v0.1.0 (file:///projects/adder)
- Finished dev [unoptimized + debuginfo] target(s) in 0.68 secs
-```
-
-注意这会构建 `adder` crate 和 *adder/add-one* 中的 `add-one` crate。现在 *adder* 目录中应该有这些文件:
-
-```text
-├── Cargo.lock
-├── Cargo.toml
-├── add-one
-│ ├── Cargo.toml
-│ └── src
-│ └── lib.rs
-├── src
-│ └── main.rs
-└── target
-```
-
#### 在工作空间中依赖外部 crate
还需注意的是工作空间只在根目录有一个 *Cargo.lock*,而不是在每一个 crate 目录都有 *Cargo.lock*。这确保了所有的 crate 都使用完全相同版本的依赖。如果在 *Cargo.toml* 和 *add-one/Cargo.toml* 中都增加 `rand` crate,则 Cargo 会将其都解析为同一版本并记录到唯一的 *Cargo.lock* 中。使得工作空间中的所有 crate 都使用相同的依赖意味着其中的 crate 都是相互兼容的。让我们在 *add-one/Cargo.toml* 中的 `[dependencies]` 部分增加 `rand` crate 以便能够在 `add-one` crate 中使用 `rand` crate: