• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use derive_getters::Getters;
2 
3 #[derive(Getters)]
4 struct SimpleSingleGeneric<T> {
5     concrete: u16,
6     generic: T,
7 }
8 
9 impl<T> SimpleSingleGeneric<T> {
new(concrete: u16, generic: T) -> Self10     pub fn new(concrete: u16, generic: T) -> Self {
11         SimpleSingleGeneric { concrete, generic }
12     }
13 }
14 
15 #[derive(PartialEq, Eq, PartialOrd, Ord)]
16 pub enum Enumeration {
17     One,
18     Two,
19     Three,
20 }
21 
22 #[derive(Getters)]
23 struct InvolvedSingleGeneric<T: Eq + Ord> {
24     concrete: u16,
25     generic: T,
26 }
27 
28 impl <T: Eq + Ord> InvolvedSingleGeneric<T> {
new(concrete: u16, generic: T) -> Self29     pub fn new(concrete: u16, generic: T) -> Self {
30         InvolvedSingleGeneric { concrete, generic }
31     }
32 }
33 
34 #[derive(Getters)]
35 struct WhereClauseSingleGeneric<T>
36 where T: Eq + Ord
37 {
38     concrete: u16,
39     generic: T,
40 }
41 
42 impl<T> WhereClauseSingleGeneric<T>
43     where T: Eq + Ord
44 {
new(concrete: u16, generic: T) -> Self45     pub fn new(concrete: u16, generic: T) -> Self {
46         WhereClauseSingleGeneric { concrete, generic }
47     }
48 }
49 
main()50 fn main() {
51     let ssg = SimpleSingleGeneric::new(23, "Hello".to_string());
52     assert!(*ssg.concrete() == 23);
53     assert!(ssg.generic() == "Hello");
54 
55     let isg = InvolvedSingleGeneric::new(44, Enumeration::Two);
56     assert!(*isg.concrete() == 44);
57     assert!(*isg.generic() == Enumeration::Two);
58 
59     let wcsg = WhereClauseSingleGeneric::new(99, Enumeration::Three);
60     assert!(*wcsg.concrete() == 99);
61     assert!(*wcsg.generic() == Enumeration::Three);
62 }
63