// A time-window handoff: build a consecutive event-ID window, serialize it
// using the Roaring portable format, and validate what another implementation
// will receive.
//
// Run with: moon run examples/portable_window

///|
fn main {
  let event_ids = @roaring.RoaringBitmap::from_range(1_000U, 5_000U)
  let stats = event_ids.get_stats()
  let wire_bytes = event_ids.serialize()
  let received = match @roaring.RoaringBitmap::deserialize(wire_bytes) {
    Ok(bitmap) => bitmap
    Err(error) => {
      println("portable handoff failed: \{error}")
      panic()
    }
  }

  println("event IDs: \{event_ids.size()}")
  println("run containers: \{stats.run_containers}")
  println("portable bytes: \{wire_bytes.length()}")
  println("receiver matches sender: \{received.equals(event_ids)}")
}