4 fn chomp(&self, bamboo
: &T
) -> T
;
7 trait Add
<RHS
,Result
>: Panda
<RHS
> {
8 fn add(&self, rhs
: &RHS
) -> Result
;
11 trait MyNum
: Sized
+ Add
<Self,Self> { }
13 struct MyInt { val: isize }
15 impl Panda
<MyInt
> for MyInt
{
16 fn chomp(&self, bamboo
: &MyInt
) -> MyInt
{
17 mi(self.val
+ bamboo
.val
)
21 impl Add
<MyInt
, MyInt
> for MyInt
{
22 fn add(&self, other
: &MyInt
) -> MyInt { self.chomp(other) }
25 impl MyNum
for MyInt {}
27 fn f
<T
:MyNum
>(x
: T
, y
: T
) -> T
{
28 return x
.add(&y
).chomp(&y
);
31 fn mi(v
: isize) -> MyInt { MyInt { val: v }
}
34 let (x
, y
) = (mi(3), mi(5));
36 assert_eq
!(z
.val
, 13);