-
只有对象安全(object-safe)的 trait 可以实现为特征对象。这里有一些复杂的规则来实现 trait 的对象安全,但在实践中,只有两个相关的规则。如果一个 trait 中定义的所有方法都符合以下规则,则该
trait
是对象安全的:- 返回值不是
Self
- 没有泛型类型的参数
- 只有是对象安全的 trait 才可以是
trait
对象
- 返回值不是
-
trait 对象执行动态分发
- 单态化:当对泛型使用 trait bound 时编译器所进行单态化处理:编译器为每一个被泛型类型参数代替的具体类型生成了非泛型的函数和方法实现。
- 单态化所产生的代码进行 静态分发(static dispatch)。静态分发发生于编译器在编译时就知晓调用了什么方法的时候
- 动态分发 (dynamic dispatch) 相对,这时编译器在编译时无法知晓调用了什么方法。在动态分发的情况下,编译器会生成在运行时确定调用了什么方法的代码。
-
Notifications
You must be signed in to change notification settings - Fork 0
wangtao2014/rust-oop
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published