From 49b8bdaeb9d9cd662e9fce672d7abf1fec61606e Mon Sep 17 00:00:00 2001 From: Tengfei Niu Date: Thu, 23 Apr 2020 14:39:08 +0800 Subject: [PATCH] fix typo --- src/ch15-04-rc.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ch15-04-rc.md b/src/ch15-04-rc.md index 9002a24..dd6d1f3 100644 --- a/src/ch15-04-rc.md +++ b/src/ch15-04-rc.md @@ -9,7 +9,7 @@ 可以将其想象为客厅中的电视。当一个人进来看电视时,他打开电视。其他人也可以进来看电视。当最后一个人离开房间时,他关掉电视因为它不再被使用了。如果某人在其他人还在看的时候就关掉了电视,正在看电视的人肯定会抓狂的! -`Rc` 用于当我们希望在堆上分配一些内存供程序的多个部分读取,而且无法在编译时确定程序的哪一部分会最后结束使用它的时候。如果确实知道哪部分是最后一个结束使用的话,就可以令其成为数据的所有者同时,正常的所有权规则就可以在编译时生效。 +`Rc` 用于当我们希望在堆上分配一些内存供程序的多个部分读取,而且无法在编译时确定程序的哪一部分会最后结束使用它的时候。如果确实知道哪部分是最后一个结束使用的话,就可以令其成为数据的所有者,正常的所有权规则就可以在编译时生效。 注意 `Rc` 只能用于单线程场景;第十六章并发会涉及到如何在多线程程序中进行引用计数。 @@ -134,9 +134,9 @@ count after creating c = 3 count after c goes out of scope = 2 ``` -我们能够看到 `a` 中 `Rc` 的初始引用计数为一,接着每次调用 `clone`,计数会增加一。当 `c` 离开作用域时,计数减一。不必像调用 `Rc::clone` 增加引用计数那样调用一个函数来减少计数;`Drop` trait 的实现当 `Rc` 值离开作用域时自动减少引用计数。 +我们能够看到 `a` 中 `Rc` 的初始引用计数为1,接着每次调用 `clone`,计数会增加1。当 `c` 离开作用域时,计数减1。不必像调用 `Rc::clone` 增加引用计数那样调用一个函数来减少计数;`Drop` trait 的实现当 `Rc` 值离开作用域时自动减少引用计数。 -从这个例子我们所不能看到的是在 `main` 的结尾当 `b` 然后是 `a` 离开作用域时,此处计数会是 0,同时 `Rc` 被完全清理。使用 `Rc` 允许一个值有多个所有者,引用计数则确保只要任何所有者依然存在其值也保持有效。 +从这个例子我们所不能看到的是,在 `main` 的结尾当 `b` 然后是 `a` 离开作用域时,此处计数会是 0,同时 `Rc` 被完全清理。使用 `Rc` 允许一个值有多个所有者,引用计数则确保只要任何所有者依然存在其值也保持有效。 通过不可变引用, `Rc` 允许在程序的多个部分之间只读地共享数据。如果 `Rc` 也允许多个可变引用,则会违反第四章讨论的借用规则之一:相同位置的多个可变借用可能造成数据竞争和不一致。不过可以修改数据是非常有用的!在下一部分,我们将讨论内部可变性模式和 `RefCell` 类型,它可以与 `Rc` 结合使用来处理不可变性的限制。