blob: a4c05fbd8313a473ff28c4b7c20e6625077b7995 [file] [log] [blame] [edit]
use derive_getters::Getters;
#[derive(Getters)]
struct SimpleSingleGeneric<T> {
concrete: u16,
generic: T,
}
impl<T> SimpleSingleGeneric<T> {
pub fn new(concrete: u16, generic: T) -> Self {
SimpleSingleGeneric { concrete, generic }
}
}
#[derive(PartialEq, Eq, PartialOrd, Ord)]
pub enum Enumeration {
One,
Two,
Three,
}
#[derive(Getters)]
struct InvolvedSingleGeneric<T: Eq + Ord> {
concrete: u16,
generic: T,
}
impl <T: Eq + Ord> InvolvedSingleGeneric<T> {
pub fn new(concrete: u16, generic: T) -> Self {
InvolvedSingleGeneric { concrete, generic }
}
}
#[derive(Getters)]
struct WhereClauseSingleGeneric<T>
where T: Eq + Ord
{
concrete: u16,
generic: T,
}
impl<T> WhereClauseSingleGeneric<T>
where T: Eq + Ord
{
pub fn new(concrete: u16, generic: T) -> Self {
WhereClauseSingleGeneric { concrete, generic }
}
}
fn main() {
let ssg = SimpleSingleGeneric::new(23, "Hello".to_string());
assert!(*ssg.concrete() == 23);
assert!(ssg.generic() == "Hello");
let isg = InvolvedSingleGeneric::new(44, Enumeration::Two);
assert!(*isg.concrete() == 44);
assert!(*isg.generic() == Enumeration::Two);
let wcsg = WhereClauseSingleGeneric::new(99, Enumeration::Three);
assert!(*wcsg.concrete() == 99);
assert!(*wcsg.generic() == Enumeration::Three);
}