What does this return?
fn double(x: i64) i64 {
x * 2
}
double(21)
0. Not 42. Without return, the function body evaluates x * 2 = 42 but return_flag is never set, so call_fn returns 0. You need return x * 2;. This is a real footgun -- and every language has to decide what to do about it. We keep it simple: if you want a value back, say return.