Closed
Description
struct Pair<A, B>
{
a : A,
b : B
}
fn pair<A, B>(a: A, b: B) -> Pair<A, B>
{
Pair{ a : a, b: b }
}
trait Printable
{
fn print(&self)
{
print!("{}", self)
}
}
impl<A: Printable, B: Printable> Printable for Pair<A, B>
{
fn print(&self)
{
self.a.print();
self.b.print();
}
}
fn print<A: Printable, B: Printable>(t: Pair<A, B>)
{
t.print();
}
fn main()
{
print(pair(1, 2));
}