Skip to content

Commit af9644b

Browse files
Merge pull request #398 from lambdaplus/dev
fix typos
2 parents 6e3675c + c175894 commit af9644b

3 files changed

Lines changed: 4 additions & 4 deletions

File tree

match/pattern.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
let tup = (0u8, 1u8);
55
let (x, y) = tup;
66
```
7-
而且我们需要知道的是,一个模式中如果出现了和当前作用域中存在的同名的绑定,它会覆盖掉外部的绑定。比如:
7+
而且我们需要知道的是,如果一个模式中出现了和当前作用域中已存在的同名的绑定,那么它会覆盖掉外部的绑定。比如:
88

99
```rust
1010
let x = 1;

ownership-system/ownership.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ move前后的`a`和`b`对应资源内存的地址不同。
117117
在Rust中,基本数据类型(Primitive Types)均实现了Copy特性,包括i8, i16, i32, i64, usize, u8, u16, u32, u64, f32, f64, (), bool, char等等。其他支持Copy的数据类型可以参考官方文档的[Copy章节](https://doc.rust-lang.org/std/marker/trait.Copy.html "Copy Trait")
118118

119119
### **浅拷贝与深拷贝**
120-
对于上面move String和i32的两个例子的区别,其实类似于很多面向对象编程语言中“浅拷贝”和“深拷贝”的区别。对于基本数据类型来说,“深拷贝”和“浅拷贝“产生的效果相同。对于引用对象类型来说,”浅拷贝“更像仅仅拷贝了对象的内存地址。
120+
前面例子中move String和i32用法的差异,其实和很多面向对象编程语言中“浅拷贝”和“深拷贝”的区别类似。对于基本数据类型来说,“深拷贝”和“浅拷贝“产生的效果相同。对于引用对象类型来说,”浅拷贝“更像仅仅拷贝了对象的内存地址。
121121
如果我们想实现对`String`的”深拷贝“怎么办? 可以直接调用`String`的Clone特性实现对内存的值拷贝而不是简单的地址拷贝。
122122
```rust
123123
{
@@ -202,7 +202,7 @@ struct Bar { //不可实现Copy特性
202202
}
203203
```
204204

205-
因为`Foo`的属性`a``b`的类型`i32``bool`均实现了`Copy`特性,所以`Fo`o也是可以实现Copy特性的。但对于`Bar`来说,它的属性`l``Vec<T>`类型,这种类型并没有实现`Copy`特性,所以`Bar`也是无法实现`Copy`特性的。
205+
因为`Foo`的属性`a``b`的类型`i32``bool`均实现了`Copy`特性,所以`Foo`也是可以实现Copy特性的。但对于`Bar`来说,它的属性`l``Vec<T>`类型,这种类型并没有实现`Copy`特性,所以`Bar`也是无法实现`Copy`特性的。
206206

207207
**那么我们如何来实现`Copy`特性呢?**
208208
有两种方式可以实现。

unsafe-rawpointer/raw-pointer.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 裸指针
22

3-
**Rust**通过限制智能指针的行为保障了编译时安全,不过我们任然有需要对指针做一些额外的操作
3+
**Rust**通过限制智能指针的行为保障了编译时安全,不过仍需要对指针做一些额外的操作
44

55
`*const T``*mut T`**Rust**中被称为“裸指针”。它允许别名,允许用来写共享所有权的类型,甚至是内存安全的共享内存类型如:`Rc<T>``Arc<T>`,但是赋予你更多权利的同时意味着你需要担当更多的责任:
66
* 不能保证指向有效的内存,甚至不能保证是非空的

0 commit comments

Comments
 (0)