sig
  type elt
  type id
  type t
  val create : unit -> Rapids.INDEX.t
  val register : Rapids.INDEX.t -> Rapids.INDEX.elt -> Rapids.INDEX.id
  val search : Rapids.INDEX.t -> Rapids.INDEX.elt -> Rapids.INDEX.id
  val find : Rapids.INDEX.t -> Rapids.INDEX.id -> Rapids.INDEX.elt
  val compare_id : Rapids.INDEX.id -> Rapids.INDEX.id -> int
  val scribe_id : 'Conduit.conduit -> '-> Rapids.INDEX.id -> unit
  val io_id : Rapids.INDEX.id Io.literate
  val iter :
    Rapids.INDEX.t -> (Rapids.INDEX.id -> Rapids.INDEX.elt -> unit) -> unit
  val set_watcher :
    Rapids.INDEX.t -> (Rapids.INDEX.id -> Rapids.INDEX.elt -> unit) -> unit
end