pub struct P; pub struct Q; pub struct R<T>(T); // returns test pub fn alef() -> R<P> { loop {} } pub fn bet() -> R<Q> { loop {} } // in_args test pub fn alpha(_x: R<P>) { loop {} } pub fn beta(_x: R<Q>) { loop {} } // test case with multiple appearances of the same type pub struct ExtraCreditStructMulti<T, U> { t: T, u: U } pub struct ExtraCreditInnerMulti {} pub fn extracreditlabhomework( _param: ExtraCreditStructMulti<ExtraCreditInnerMulti, ExtraCreditInnerMulti> ) { loop {} } pub fn redherringmatchforextracredit( _param: ExtraCreditStructMulti<ExtraCreditInnerMulti, ()> ) { loop {} } pub trait TraitCat {} pub trait TraitDog {} pub fn gamma<T: TraitCat + TraitDog>(t: T) {} pub fn super_soup(s: Result<String, i32>) -> Result<String, i32> { s }