Merge pull request #13 from RustyCab/andy/fix/minor-fixes

Andy/fix/minor fixes
This commit is contained in:
Davirain
2023-05-31 15:03:01 +08:00
committed by GitHub
4 changed files with 5 additions and 6 deletions

View File

@@ -382,11 +382,11 @@ pub fn produce_item_with_name<T: GetName>(is_teacher: bool) -> T {
}
```
返回的值相当于是一个泛型,这个泛型要求要实现`GetName`这个trait。回顾泛型的知识Rust实际上是在编译的时候把泛型换成了具体的类型所以上面的定义中T在编译时会变成确定的某个类型。所以在编译时上面的代码可能被翻译成如下两种情况
返回的值相当于是一个泛型,这个泛型要求要实现`GetName`这个trait。回顾泛型的知识Rust实际上是在编译的时候把泛型换成了具体的类型所以上面的定义中T在编译时会变成确定的某个类型(按照上下文即Student类型或Teacher类型)。所以在编译时,上面的代码可能被翻译成如下两种情况:
```rust
// 编译时代码将被翻译成如下:
pub fn produce_item_with_name(is_teacher: bool) -> Student {
pub fn produce_item_with_name(is_teacher: bool) -> Teacher {
let result = if is_teacher {
Teacher { name: "alice".to_string() }
} else {
@@ -410,7 +410,7 @@ pub fn produce_item_with_name(is_teacher: bool) -> Student {
无论是哪种情况,都是错误的。
那如果需要返回多种实现了trait的类型则需要使用后续讲解的内容trait对象3.9.2节)来满足需求。
那如果需要返回多种实现了trait的类型则需要使用后续讲解的内容trait对象3.10.2节)来满足需求。
## 5. 使用`trait bound`有条件的实现方法

View File

@@ -246,7 +246,6 @@ fn main() {
```rust
struct Closure<'a> {
x: i32,
y: i32,
}
impl<'a> FnOnce<(i32,)> for Closure<'a> {

View File

@@ -167,7 +167,7 @@ fn main() {
fn main() {
let a = [1, 2, 3, 4, 5]; //直接写数组的值
let b: [i32; 5] = [1, 2, 3, 4, 5]; //显示指定数组的类型和长度
let c: [i32; 5] = [3; 5]; //数组每个元素为同样的值等价于let a = [5, 5, 5, 5, 5];
let c: [i32; 5] = [3; 5]; //数组每个元素为同样的值等价于let a = [3, 3, 3, 3, 3];
}
```

View File

@@ -55,7 +55,7 @@ fn main() {
## 3.3.2. 语句和表达式
Rust中语句是执行一个操作但不返回值的指令,表达式则计算并产生一个值。
Rust中语句是执行一个操作但不返回值的指令表达式则计算并产生一个值。
```rust
fn main() {