```rust
let opt_bound = do self.state.to_uint().and_then |a| {
     do self.stop.to_uint().map(|b| b - a);
};
opt_bound.map_default((uint::max_value, None), |bound| (bound, Some(bound)))
```
maybe?

Also, what happens if `b - a` wraps? (Is it possible with a sane type `A`?)