pub trait Trait<Rhs = Self> {
// Required methods
fn method(&self, other: &Rhs);
fn method2(&self, other: *const Rhs);
fn bar(&self, other: Rhs);
fn foo(&self, other: &Struct);
fn foo2(&self, other: *const Struct);
fn tuple(&self, other: (Rhs, Rhs));
fn tuple2(&self, other: (Struct, Rhs));
fn slice(&self, other: &[Rhs]);
fn ref_array(&self, other: &[Rhs; 2]);
fn slice2(&self, other: &[Struct]);
fn array(&self, other: [Rhs; 2]);
fn array2(&self, other: [Struct; 2]);
}