We should have some way of using Option<uint> (or a moral equivalent) for integers with an excluded sentinel value, e.g. MovePathIndex in librustc. It's frustrating that Option isn't actually a zero-cost abstraction, forcing you to fall back to manually checking sentinel values.