Rust:Trait 详解
生活随笔
收集整理的這篇文章主要介紹了
Rust:Trait 详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Rust語言里不同的type(比如 struct, enum等)可以調用的函數主要包括本身實現的方法。此外,Rust也提供了trait來定義不同type所需的“common behavior”,以此簡化代碼。
1. 基本內容
定義trait:
一個trait里面可以包含多個method
trait Behavior {fn eat(&self){println!("真香")}fn make_sound(&self);}對type實現trait:
以strcut為例,對struct實現trait,方式與實現struct方法類似。實現時可以選擇 重寫trait中的method,也可以選擇不重寫,直接使用trait中默認的method定義
struct Dog; impl Behavior for Dog {fn make_sound(&self) {println!("汪!")} } struct Cat; impl Behavior for Cat {fn make_sound(&self) {println!("喵~")} }結果:
實例化struct,調用trait
fn main(){let dog = Dog;let cat = Cat;dog.eat();dog.make_sound();cat.eat();cat.make_sound(); } 真香 汪! 真香 喵~2. 一些高級玩法
把trait作為參數傳給函數,讓函數可以處理不同的type
fn feed(item: impl Behavior) {item.eat();}feed(item:dog); 真香不過,feed(item:impl Behavior)是簡略寫法,是種語法糖。完整的形式是:
fn feed<T: Behavior>(item: T) {item.eat();}這也被稱作 trait bond。
可以在函數里綁定多個type
//語法糖 fn feed(item1:impl Behavior,item1:impl Behavior) {//等價寫法 fn feed<T: Behavior>(item1: T, item2: T){一個type綁定多個trait
fn feed(item: impl Summary + Display) {//等價 fn feed<T: Summary + Display>(item: T) {總結
以上是生活随笔為你收集整理的Rust:Trait 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫写得好,牢饭吃到饱?
- 下一篇: 坐姿: