mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-03-14 03:10:44 +08:00
Update Ch10
This commit is contained in:
parent
52e9a98477
commit
8368de2131
@ -1,14 +1,14 @@
|
||||
# 泛型、特质与生命周期
|
||||
|
||||
每种编程语言都有着用于有效处理重复概念的一些工具。在 Rust 中,一种这样的工具就是 *泛型(generics)*:将一些具体类型或其他属性的替身抽象出来。对于在编译及运行代码时泛型处有着什么,咱们无需知悉就可以表达泛型的行为,或与其他泛型之间的关系(abstract stand-ins for concret types or other properties. We can express the bevavior of generics or how they relate to other generics without knowing what will be in their place when compiling and running the code)。
|
||||
每种编程语言都有着用于有效处理重复概念的一些工具。在 Rust 中,一种这样的工具就是 *泛型,generics*:将一些具体类型或其他属性的替身抽象出来。对于在编译及运行代码时泛型处有着什么,咱们无需知悉就可以表达泛型的行为,或与其他泛型之间的关系,abstract stand-ins for concret types or other properties. We can express the bevavior of generics or how they relate to other generics without knowing what will be in their place when compiling and running the code。
|
||||
|
||||
与函数取一些未知值,以在多个具体值上运行函数体中同样代码的方式一样,其也可以取一些泛型的参数,而非像是 `i32` 或 `String` 这样的具体类型。事实上,前面在第 6 章的 `Option<T>`,第 8 章的 `Vec<T>` 和 `HashMap<K, V>`,还有第 9 章的 `Result<T, E>` 中,就已经用到了泛型特性。本章中,将探讨怎样定义咱们自己的、带有泛型特性的类型、函数及方法!
|
||||
|
||||
首先,这里会回顾怎样对函数进行凝练,从而减少代码重复。随后会使用同样技巧,来将两个只是参数类型不同的函数,构造为一个泛型函数。这里还会说明,怎样在结构体与枚举定义中使用泛型。
|
||||
|
||||
接着就会掌握怎样使用 *特质(traits)*,来以泛型方式定义动作行为。可将特质与泛型结合,来将某个泛型约束为只接受有着特定行为的那些类型,而不再是任意类型。
|
||||
接着就会掌握怎样使用 *特质,traits*,来以泛型方式定义动作行为。可将特质与泛型结合,来将某个泛型约束为只接受有着特定行为的那些类型,而不再是任意类型。
|
||||
|
||||
最后,这里将讨论 *生命周期(lifetimes)*:给到编译器有关引用之间关系信息的各种泛型。生命周期特性实现了给到编译器有关借用值的足够信息,从而在相比于没有咱们帮助而未给到这些信息时,编译器就能够于更多的不同情形下,确保这些引用的有效性。
|
||||
最后,这里将讨论 *生命周期,lifetimes*:给到编译器有关引用之间关系信息的各种泛型。生命周期特性实现了给到编译器有关借用值的足够信息,从而在相比于没有咱们帮助而未给到这些信息时,编译器就能够于更多的不同情形下,确保这些引用的有效性。
|
||||
|
||||
|
||||
## 通过提取出函数,而去除重复
|
||||
|
Loading…
Reference in New Issue
Block a user