word64 Position { x: i32, y: i32, } fn sum_of_position(pos: Position) -> i32 { return: pos.x + pos.y } word128 Line { from: Position, to: Position, } fn sum_of_end_points(line: Line) -> i32 { var result = sum_of_position(line.from) + sum_of_position(line.to); return: result } fn sum_of_lines(lines: []Line) -> i32 { var total = 0; var i = 0; { if i == |lines| goto return; total = total + sum_of_end_points(lines[i]); i = i + 1; loop; } return: total } struct FourLines { first_line: Line, other_lines: [3]Line, } fn sum_of_four_lines(four_lines: FourLines) -> i32 { var x = sum_of_end_points(four_lines.first_line); var y = sum_of_lines(four_lines.other_lines); return: x + y } fn main() -> i32 { var from = Position { x: 10, y: 10 }; var line = Line { from, to: Position { x: 10, y: 0 } }; line.to.y = 10; var four_lines = FourLines { first_line: line, other_lines: [ Line { from: Position { x: 0, y: 0 }, to: from }, line, line, ], }; four_lines.other_lines[0].from = Position { x: 20, y: 20 }; four_lines.first_line.to.y = 30; var result = sum_of_four_lines(four_lines); return: result }