For simple cases, you can match several things at once:
match t, it with
| Some t, _ -> (v, t)
| None, Some it -> (v, it)
| None, None -> failwith "Cannot infer local vars"
This is something I do all the time. I'm told the compiler is good with this construct (it doesn't actually generate an extra pair).