let enqueue t key value =
    if Table.mem t.table key then
      `Key_already_present
    else begin
      let elt =
        Doubly_linked.insert_last t.queue
          { Key_value.key = key; value = value; }
      in
      Table.add t.table ~key ~data:elt;
      `Ok
    end