Rust的Blanket Implements(通用实现)
作者:誉儿
出处:
在Rust中的实现 , 您可以扩展实现的类型的功能 。 实现是使用impl关键字定义的 , 并且包含属于类型实例的函数 或者 属于当前类型实例的函数 。
With implementations in Rust, you can extend the functionality of an implementation type. Implementations are defined with the impl keyword and contain functions that belong to an instance of a type, statically, or to an instance that is being implemented.
文章插图
With blanket implementations you can save writing similar implementations for multiple types.
你可以使用blanket impl 保留对于多种类型相似的实现 。
什么是blanket implementations官方定义:We can also conditionally implement a trait for any type that implements another trait. Implementations of a trait on any type that satisfies the trait bounds are called _blanket implementations_ and are extensively used in the Rust standard library. For example, the standard library implements the ToString trait on any type that implements the Display trait.
我们可以有条件地为任何一个 实现了另一个Trait的类型 实现一个Trait 。为任何一个满足 Trait bound的类型 实现一个Trait ,称为通用实现(_blanket implementations_) 。且被广泛地使用于Rust标准库 。举个例子 ,标准库 为任何一个实现了Display Trait的类型 实现了 ToString Trait 。
Blanket implementationsleverage Rust’s ability to use generic parameters. They can be used to define shared behavior using traits. This is a great way to remove redundancy in code by reducing the need to repeat the code for different types with similar functionality.
In the code below, we are making a blanket implementation on a _generic type_, T, that implements the Display trait.
Blanket implementations(通用实现)使Rust具备使用模板参数的能力 。 它们可用于使用Trait来定义共享行为 。最大的用处就是减少为不同类型的相似功能写重复代码 ,以减少冗余代码 。
以下的代码 ,我们为 实现了Display trait的模板参数T 定义了一个通用实现 。
【Rust的Blanket Implements(通用实现)】impl ToString for T {// ...}
To elaborate, our generic type, T, is bound to implement Display . Therefore, we use behavior guaranteed by the Display type, to produce a string representation, to our advantage.
详细地说 , 我们的模板类型T必须实现Display 。 因此 , 我们利用Display类型保证的行为来产生字符串表示形式 , 来发挥Rust的优势 。
参考《官方文档》 #using-trait-bounds-to-conditionally-implement-methods
《Definition: Blanket implementation》
作者:誉儿
出处:
推荐阅读
- Rust能不能做后端开发语言?
- 技术|华为召开“TrustInTech 2020线上峰会”:共享科技带来的世界繁荣
- 微软为什么从 C/C++ 转向了 Rust?
- Rust特殊枚举Option用法
- Rust语言学习:Beginning_Rust
- Rust的不足之处,让它无法成为一门成熟的编程语言
- 快科技|苹果未进前五,Trustdata:Q3华为手机国内销量第一