add a example to ownership.md

pull/479/head
sunface 3 years ago
parent f92d3337d9
commit 5b26f827dd

@ -248,14 +248,15 @@ println!("x = {}, y = {}", x, y);
Rust 有一个叫做 `Copy` 的特征,可以用在类似整型这样在栈中存储的类型。如果一个类型拥有 `Copy` 特征,一个旧的变量在被赋值给其他变量后仍然可用。 Rust 有一个叫做 `Copy` 的特征,可以用在类似整型这样在栈中存储的类型。如果一个类型拥有 `Copy` 特征,一个旧的变量在被赋值给其他变量后仍然可用。
那么什么类型是可 `Copy` 的呢?可以查看给定类型的文档来确认,不过作为一个通用的规则:**保存在栈上的数据类型可以 `Copy`任何基本类型的组合可以 `Copy` ,不需要分配内存或某种形式资源的类型是 `Copy` 的**。如下是一些 `Copy` 的类型: 那么什么类型是可 `Copy` 的呢?可以查看给定类型的文档来确认,不过作为一个通用的规则:**任何基本类型的组合可以 `Copy` ,不需要分配内存或某种形式资源的类型是可以 `Copy` 的**。如下是一些 `Copy` 的类型:
* 所有整数类型,比如 `u32` * 所有整数类型,比如 `u32`
* 布尔类型,`bool`,它的值是 `true``false` * 布尔类型,`bool`,它的值是 `true``false`
* 所有浮点数类型,比如 `f64` * 所有浮点数类型,比如 `f64`
* 字符类型,`char`。 * 字符类型,`char`。
* 元组,当且仅当其包含的类型也都是 `Copy` 的时候。比如,`(i32, i32)` 是 `Copy` 的,但 `(i32, String)` 就不是。 * 元组,当且仅当其包含的类型也都是 `Copy` 的时候。比如,`(i32, i32)` 是 `Copy` 的,但 `(i32, String)` 就不是。
* 引用类型,例如[转移所有权](#转移所有权)中的最后一个例子
## 函数传值与返回 ## 函数传值与返回
将值传递给函数,一样会发生 `移动` 或者 `复制`,就跟 `let` 语句一样,下面的代码展示了所有权、作用域的规则: 将值传递给函数,一样会发生 `移动` 或者 `复制`,就跟 `let` 语句一样,下面的代码展示了所有权、作用域的规则:
```rust ```rust

Loading…
Cancel
Save