//! returns: 0 //! Methods returning various types and records. record Pair { a: i32, b: i32, } fn (p: *Pair) sum() -> i32 { return p.a + p.b; } fn (p: *Pair) swapped() -> Pair { return Pair { a: p.b, b: p.a }; } fn (p: *Pair) firstPtr() -> *i32 { return &p.a; } @default fn main() -> i32 { let pair = Pair { a: 10, b: 20 }; // Scalar return. assert pair.sum() == 30; // Aggregate return. let s = pair.swapped(); assert s.a == 20; assert s.b == 10; // Pointer return. let ptr = pair.firstPtr(); assert *ptr == 10; return 0; }