動態與靜態的發送 (dynamic vs static ispatch)
執行方法有兩種方式:
- 靜態發送 - 當一個實體型別是已知的,那我們就直接知道有哪些函式可以呼叫。
- 動態發送 - 當一個實體型別是未知的,我們就必須找出某種呼叫函式的正確方式。
&dyn MyTrait
這個特徵型別讓我們有能力間接使用動態發送操作該實體物件。
當動態發送被使用時,Rust 鼓勵你將 dyn
放在你的特徵型別前面,這樣其他人才會知道。
記憶體細節:
- 動態發送稍稍慢了一點,因為需要追蹤指標 (pointer) 找到真正的函式呼叫。