///|
fn main {
  let network = @mooncidr.Ipv4Network::parse("10.0.0.0/8").unwrap()
  let address = @mooncidr.Ipv4Address::parse("10.42.7.9").unwrap()
  println(
    "\{address.to_string()} in \{network.to_string()} = \{network.contains(address)}",
  )
  println("\{address.to_string()} scope = \{address.scope().to_string()}")

  let policy = @mooncidr.AclPolicy::deny_by_default()
    .allow_network(
      "office",
      @mooncidr.Ipv4Network::parse("10.0.0.0/8").unwrap(),
    )
    .deny_address(
      "quarantine",
      @mooncidr.Ipv4Address::parse("10.0.0.13").unwrap(),
    )
  println(policy.evaluate(address).to_string())

  let docs = @mooncidr.Ipv4NetworkSet::parse_all([
    "192.0.2.0/24", "198.51.100.0/24", "203.0.113.0/24",
  ]).unwrap()
  println("documentation ranges: \{docs.to_string()}")

  let ipv6 = @mooncidr.Ipv6Address::parse("2001:db8::42").unwrap()
  let ipv6_net = @mooncidr.Ipv6Network::parse("2001:db8::/32").unwrap()
  println(
    "\{ipv6.to_string()} in \{ipv6_net.to_string()} = \{ipv6_net.contains(ipv6)}",
  )
}