1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
pub struct Helper;
pub struct Predicate;

pub trait Kind {
    type Returns;
}

impl Kind for Helper {
    type Returns = String;
}

impl Kind for Predicate {
    type Returns = bool;
}

pub type HelperFn<T, K> = fn(&T) -> <K as Kind>::Returns;