mirror of
https://github.com/RustyCab/LearnRustEasy.git
synced 2026-11-03 22:14:03 +08:00
Merge pull request #13 from RustyCab/andy/fix/minor-fixes
Andy/fix/minor fixes
This commit is contained in:
@@ -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
|
```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 {
|
let result = if is_teacher {
|
||||||
Teacher { name: "alice".to_string() }
|
Teacher { name: "alice".to_string() }
|
||||||
} else {
|
} 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`有条件的实现方法
|
## 5. 使用`trait bound`有条件的实现方法
|
||||||
|
|
||||||
|
|||||||
@@ -246,7 +246,6 @@ fn main() {
|
|||||||
```rust
|
```rust
|
||||||
struct Closure<'a> {
|
struct Closure<'a> {
|
||||||
x: i32,
|
x: i32,
|
||||||
y: i32,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> FnOnce<(i32,)> for Closure<'a> {
|
impl<'a> FnOnce<(i32,)> for Closure<'a> {
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ fn main() {
|
|||||||
fn main() {
|
fn main() {
|
||||||
let a = [1, 2, 3, 4, 5]; //直接写数组的值
|
let a = [1, 2, 3, 4, 5]; //直接写数组的值
|
||||||
let b: [i32; 5] = [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];
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ fn main() {
|
|||||||
|
|
||||||
## 3.3.2. 语句和表达式
|
## 3.3.2. 语句和表达式
|
||||||
|
|
||||||
Rust中,语句是执行一个写操作但不返回值的指令,表达式则计算并产生一个值。
|
Rust中,语句是执行一个操作但不返回值的指令,表达式则计算并产生一个值。
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user