This code does a use-after-free: ``` fn main() { let msg; match some(~"Hello") { some(ref m) => { msg = m; }, none => { fail } } io::println(*msg); } ``` Should it not compile? Or should liveness/borrowck ensure that the string live as long as the escaped reference?