Rust——函数泛型

泛型函数类似于其他编程语言中的多态

格式:

  fn 函数名<T>()

以下为一个简单的事例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#[derive(Debug)]
struct BillPaper<T1,T2,T3,T4>{     //定义一个账单结构体(包含时间/金额/交易内容/交易方式)
    Time:T1,
    Amount:T2,
    Content:T3,
    PayType:T4,
}
impl<T1,T2,T3,T4> BillPaper<T1,T2,T3,T4>{    //泛型结构体方法定义
    fn time(&self)->&T1{
        &self.Time
    }
    fn amount(&self)->&T2{
        &self.Amount
    }
    fn content(&self)->&T3{
        &self.Content
    }
    fn payType(&self)->&T4{
        &self.PayType
    }
}
 
//用户等级
#[derive(Debug)]
enum UserLevel{
    Nomal,
    Vip,
    Svip,
}
 
#[derive(Debug)]
struct UserInfo{
    userNo:u32,
    userName:String,
    userLevel:UserLevel,
}
 
 
 
 //自定义函数泛型
 fn  get_message<T>(message:T){
      
    let _=message;    
}
 
 
fn main(){
     
    let customer1 = UserInfo{
        userNo:05091314,
        userName:String::from("zp"),
        userLevel:UserLevel::Svip,
    };
 
    let billPaper1 = BillPaper{
        Time:("2022/01/12  12:05:09"),
        Amount:520,
        Content:"product",
        PayType:"Bank",
    };
    get_message("print custom info:");
    println!("Customer info status---{:#?}",customer1);
    get_message(00000);
    println!("Bill info status---{:#?}",billPaper1);
 
    
     
}

 运行结果:

 

posted @   echo-efun  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示