Generated binit.rs has lots of mismatched types
```rust
error[E0308]: mismatched types
 --> src/binit.rs:6:18
  |
6 |     while (low < high) {
  |                  ^^^^ expected `i32`, found `usize`
  |
help: you can convert a `usize` to an `i32` and panic if the converted value doesn't fit
  |
6 |     while (low < high.try_into().unwrap()) {
  |                  ^^^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
 --> src/binit.rs:7:43
  |
7 |         let middle: _ = i32::from(((low + high) / 2));
  |                                           ^^^^ expected `i32`, found `usize`

error[E0277]: cannot add `usize` to `i32`
 --> src/binit.rs:7:41
  |
7 |         let middle: _ = i32::from(((low + high) / 2));
  |                                         ^ no implementation for `i32 + usize`
  |
  = help: the trait `Add<usize>` is not implemented for `i32`

error[E0277]: the type `[i32]` cannot be indexed by `i32`
 --> src/binit.rs:8:19
  |
8 |         if item < data[middle] {
  |                   ^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
  |
  = help: the trait `SliceIndex<[i32]>` is not implemented for `i32`
  = note: required because of the requirements on the impl of `Index<i32>` for `Vec<i32>`

error[E0308]: mismatched types
 --> src/binit.rs:9:20
  |
9 |             high = middle;
  |                    ^^^^^^ expected `usize`, found `i32`
  |
help: you can convert an `i32` to a `usize` and panic if the converted value doesn't fit
  |
9 |             high = middle.try_into().unwrap();
  |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0277]: the type `[{integer}]` cannot be indexed by `i32`
  --> src/binit.rs:23:9
   |
23 |         bins[bisect_right(limits, d)] += 1;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
   |
   = help: the trait `SliceIndex<[{integer}]>` is not implemented for `i32`
   = note: required because of the requirements on the impl of `Index<i32>` for `Vec<{integer}>`

```