fn identity(x: T) -> T { return x; } struct Box { val: T; } // Generic Impl impl Box { fn get(self) -> T { return self.val; } } test "Generics" { // Generic Function let i = identity(42); assert(i == 42, "Generic function failed"); // Generic Struct & Impl let b = Box { val: 100 }; assert(b.get() == 100, "Generic impl failed"); } struct Container { } impl Container { fn check_size(self, value: T) -> int { return sizeof(value); } } test "Generic Method in Regular Impl" { let c = Container{}; assert(c.check_size(10) == sizeof(int), "Generic method int size"); assert(c.check_size(3.14) == sizeof(double), "Generic method double size"); }