Rust編程進階:070、完全限定語法

例子:

//trait A {
//    fn print(&self);
//}
//
//trait B {
//    fn print(&self);
//}
//
//struct MyType;
//
//impl A for MyType {
//    fn print(&self) {
//        println!("A trait for MyType");
//    }
//}
//
//impl B for MyType {
//    fn print(&self) {
//        println!("B trait for MyType");
//    }
//}
//
//impl MyType {
//    fn print(&self) {
//        println!("MyType");
//    }
//}
//
//fn main() {
//    let my_type = MyType;
//    my_type.print(); //等價於MyType::print(&my_type);
//    A::print(&my_type);
//    B::print(&my_type);
//    println!("Hello, world!");
//}

trait Animal {
    fn baby_name() -> String;
}

struct Dog;

impl Dog {
    fn baby_name() -> String {
        String::from("Spot")
    }
}

impl Animal for Dog {
    fn baby_name() -> String {
        String::from("puppy")
    }
}

fn main() {
    println!("baby_name: {}", Dog::baby_name());
    //println!("baby_name: {}", Animal::baby_name()); //error
    println!("baby_name: {}", <Dog as Animal>::baby_name()); //完全限定語法
}

//完全限定語法定義:
//<Type as Trait>::function(.....)

本節全部源代碼:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_htrait3/src/main.rs
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章