Rust学习笔记 6.1 特质和泛型(Trait && generics)

本文介绍了Rust编程语言中的特质(Trait)和泛型的概念及用法。特质类似于接口和抽象类,用于为结构体添加行为。示例展示了如何定义和实现特质,以及如何通过泛型编写通用代码。泛型允许在编程时使用未指定的类型,增强了代码的复用性。文章通过具体的代码示例解释了如何使用泛型方法和泛型类型约束。
摘要由CSDN通过智能技术生成

6.1 特质和泛型(Trait && generics)

Traits

  • 与接口和抽象类类似
  • 给结构体添加定义的行为
impl trait_demo for struct_demo
struct Steve {
    name: String,
}

impl Person for Steve {
    fn new(name_str: String) -> Self {
        Steve { name: name_str }
    }

    fn language(&self) -> &str {
        "Steve"
    }
}

struct Alex {
    name: String,
}

impl Person for Alex {
    fn new(name_str: String) -> Self {
        Alex { name: name_str }
    }

    fn language(&self) -> &str {
        "Alex"
    }
    fn eat_food(&self) {
        println!("Eat fish!");
    }
}

trait Person {
    fn new(name_str: String) -> Self;
    fn language(&self) -> &str;
    fn eat_food(&self) {
        println!("Eat food");
    }
}

fn main() {
    let a = Steve::new("Star_tears".to_string());
    let b = Alex::new("T_dream".to_string());
    a.eat_food();
    b.eat_food();
}

  • 返回枚举

    • fn get_trait -> Box<dyn trait_name>
      

泛型

  • 泛型程序设计(generic programming)是程序设计语言的一种风格或范式
  • 泛型运行程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型
trait Bark {
    fn bark(&self) -> String;
}

struct Dog {
    species: String,
}

struct Cat {
    color: String,
}

impl Bark for Dog {
    fn bark(&self) -> String {
        format!("{} barking", self.species)
    }
}

fn bark<T: Bark>(b: T) {
    println!("{}", b.bark());
}

fn main() {
    let dog = Dog {
        species: "white dog".to_string(),
    };
    bark(dog);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值