fn ret_int_i() -> int { ret 10; } fn ret_ext_i() -> @int { ret @10; } fn ret_int_tup() -> tup(int, int) { ret tup(10, 10); } fn ret_ext_tup() -> @tup(int, int) { ret @tup(10, 10); } fn ret_ext_mem() -> tup(@int, @int) { ret tup(@10, @10); } fn ret_ext_ext_mem() -> @tup(@int, @int) { ret @tup(@10, @10); } fn main() { let int int_i; let @int ext_i; let tup(int, int) int_tup; let @tup(int, int) ext_tup; let tup(@int, @int) ext_mem; let @tup(@int, @int) ext_ext_mem; int_i = ret_int_i(); // initializing int_i = ret_int_i(); // non-initializing int_i = ret_int_i(); // non-initializing ext_i = ret_ext_i(); // initializing ext_i = ret_ext_i(); // non-initializing ext_i = ret_ext_i(); // non-initializing int_tup = ret_int_tup(); // initializing int_tup = ret_int_tup(); // non-initializing int_tup = ret_int_tup(); // non-initializing ext_tup = ret_ext_tup(); // initializing ext_tup = ret_ext_tup(); // non-initializing ext_tup = ret_ext_tup(); // non-initializing ext_mem = ret_ext_mem(); // initializing ext_mem = ret_ext_mem(); // non-initializing ext_mem = ret_ext_mem(); // non-initializing ext_ext_mem = ret_ext_ext_mem(); // initializing ext_ext_mem = ret_ext_ext_mem(); // non-initializing ext_ext_mem = ret_ext_ext_mem(); // non-initializing }