#![crate_name="foo"] pub trait Some {} impl Some for () {} pub trait Other {} impl Other for () {} pub fn alef() -> T { loop {} } pub fn alpha() -> impl Some { } pub fn bet(t: T) -> U { loop {} } pub fn beta(t: T) -> T {} pub fn other(t: T, u: U) { loop {} } pub fn alternate(t: T, u: T) { loop {} }