type error = | | Invalid_byte of int | Appear when we expect a specific byte and we catch another one. | 
| | Invalid_version of Stdlib.Int32.t | Appear when the version of the IDX file is wrong. | 
| | Invalid_index_of_bigoffset of int | Appear when we try to read a big offset value and we can't catch it. | 
| | Expected_bigoffset_table | Appear when we don't have a big offset table but expect one. | 
| | Invalid_hash of Hash.t * Hash.t | Appear when the hash produced when we un-serialize the IDX file does not correspond with the hash provided. | 
The error type.
refill off len t provides a new t with len bytes to read, starting at off. This byte range is read by calls to eval with t until `Await is returned.
val eval : Cstruct.t -> t -> [ `Await of t | `End of t * Hash.t | `Hash of t * (Hash.t * Checkseum.Crc32.t * int64) | `Error of t * error ]eval src t is:
- `Await tiff- tneeds more input storage. The client must use- refillto provide a new buffer and then call- evalwith- `Awaituntil other value returned.
- `End (t, hash)when- tis done. We returns the hash of the IDX file.
- `Hash (t, (hash, crc, offset))when- tcan returns a new value- (hash, crc, offset). The client can call- evalto continue the process. The value will be consumed then.
- `Error (t, exn)iff the decoder meet an- error- exn. The decoder can't continue and sticks in this situation.