美文网首页
rust--trait继承另外一个trait

rust--trait继承另外一个trait

作者: 极光火狐狸 | 来源:发表于2018-08-31 16:07 被阅读61次
fn main() {

    use std::fmt;

    #[allow(dead_code)]
    struct Point {
        x: i32,
        y: i32,
    }

    // OutlinePrint 这个trait 继承fmt::Display, 
    // 并提供一个额外的 outline_print 功能.
    trait OutlinePrint: fmt::Display {
        // outline_print是一个默认实现功能函数.
        // 利用self数据进行二次加工.
        fn outline_print(&self) {
            let output = self.to_string();
            let len = output.len();
            println!("{}", "*".repeat(len + 4));
            println!("*{}*", " ".repeat(len + 2));
            println!("* {} *", output);
            println!("*{}*", " ".repeat(len + 2));
            println!("{}", "*".repeat(len + 4));
        }
    }

    // 由于OutlinePrint已经默认实现了outline_print功能, 
    // 因此这里只要声明一下Point拥有这个trait即可.
    impl OutlinePrint for Point {}
    
    // 这里仍然需要声明Point拥有fmt::Display, 这是因为Rust的语法要求.
    impl fmt::Display for Point {
        
        // 为什么这里要写这个方法?
        // 那是因为fmt::Display只是定义了一个接口, 并没有实现这个方法.
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "({}, {})", self.x, self.y)
        }
    }

    // 通过三面这几种定义、组合、声明, 最终完成了打印效果改装.
    let p = Point {x: 1, y: 2};
    p.outline_print();

    // output:
    // **********
    // *        *
    // * (1, 2) *
    // *        *
    // **********
}

相关文章

  • rust--trait继承另外一个trait

  • PHP Trait

    PHP类只能继承一个父类(单继承),trait就是用来解决这个问题的。 Trait 是为类似 PHP 的单继承语言...

  • 7.9 Trait

    trait 是PHP为类只能单继承而实现的代码复用机制。 trait 不能继承,也不能实现接口。 trait 不能...

  • php中trait的理解

    trait是什么 trait是为解决php单继承而准备的一种代码复用机制。trait解决了单继承的限制,使开发人员...

  • Trait特性

    PHP5.4以后实现了一个新的代码复用的方法Trait,Trait为了减少单继承语言的限制,相对于传统继承增加了水...

  • 关于Trait

    trait是为了给类似PHP的单继承语言而准备的一种代码复用机制。trait不能被实例化。trait用use + ...

  • rust--trait的默认泛型参数

  • laravel-skill

    trait的例子,类似类的继承 可以自己写同名方法覆盖trait的方法。 更新数据防止名称重复

  • 第二次作业

    继承与多态代码: 运行: 接口代码: 运行: trait代码: 运行:

  • 初学php遇到的第一个有意思的类属性方法

    学习看见这个内置常量_TRAIT_ ,菜鸟教程给的解析是"从基类继承的成员被插入的 SayWorld Trait ...

网友评论

      本文标题:rust--trait继承另外一个trait

      本文链接:https://www.haomeiwen.com/subject/hmtewftx.html