|  |  | @ -248,13 +248,14 @@ 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` 语句一样,下面的代码展示了所有权、作用域的规则: | 
			
		
	
	
		
		
			
				
					|  |  | 
 |