Merge pull request #516 from zongzi531/hotfix/box-2

Fix typo in smart-pointer/box.md
pull/522/head
Sunface 3 years ago committed by GitHub
commit 5082f15fff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -183,6 +183,7 @@ fn main() {
那如果数组中每个元素都是一个 `Box` 对象呢?来看看 `Vec<Box<i32>>` 的内存布局: 那如果数组中每个元素都是一个 `Box` 对象呢?来看看 `Vec<Box<i32>>` 的内存布局:
```rust ```rust
(heap)
(stack) (heap) ┌───┐ (stack) (heap) ┌───┐
┌──────┐ ┌───┐ ┌─→│ 1 │ ┌──────┐ ┌───┐ ┌─→│ 1 │
│ vec2 │──→│B1 │─┘ └───┘ │ vec2 │──→│B1 │─┘ └───┘
@ -234,7 +235,7 @@ fn gen_static_str() -> &'static str{
} }
``` ```
在之前的代码中,如果 `String` 创建于函数中,那么返回它的唯一方法就是转移所有权给调用者 `fn move_str() -> String`,而通过 `Box::leak` 我们不仅返回了一个 `&str` 字符串切片,它还是 `'static` 类型的! 在之前的代码中,如果 `String` 创建于函数中,那么返回它的唯一方法就是转移所有权给调用者 `fn move_str() -> String`,而通过 `Box::leak` 我们不仅返回了一个 `&str` 字符串切片,它还是 `'static` 生命周期的!
要知道真正具有 `'static` 生命周期的往往都是编译期就创建的值,例如 `let v = "hello, world"`,这里 `v` 是直接打包到二进制可执行文件中的,因此该字符串具有 `'static` 生命周期,再比如 `const` 常量。 要知道真正具有 `'static` 生命周期的往往都是编译期就创建的值,例如 `let v = "hello, world"`,这里 `v` 是直接打包到二进制可执行文件中的,因此该字符串具有 `'static` 生命周期,再比如 `const` 常量。

Loading…
Cancel
Save