On Thu Nov 27, 2025 at 9:53 AM JST, John Hubbard wrote: > On 11/26/25 3:43 PM, Lyude Paul wrote: >> I'm not sure this is necessary - for one, we could just use the .len() method >> on the Range. As well - if we just implement Deref for FbRange (which I think >> would be fine here) we could just use .len() through that. > > Hi Lyude! > > Good idea about the deref coercion. It has a minor type mismatch as-is, > though: Range<u64>::len() returns usize, but FbRange::len() returns u64, > which matches the callers that we have so far.
It's even worse than that, `Range<u64>::len()` simply doesn't exist. :) `len()` is implemented through `ExactSizeIterator`, which specifies the return type as `usize`. This obviously cannot provide a reliable result when the range is u64, so the implementation was simply not done. See [1] for evidence. But having our own range type lets us slip our own `fn len(&self) -> u64` implementation. [1] https://doc.rust-lang.org/std/ops/struct.Range.html
