fun <T> Set<T>.serialize(
serializer: Serializer,
serializeElement: Serializer.(T) -> Unit,
) {
serializer.serialize_len(size.toLong())
forEach { element ->
serializer.serializeElement(element)
}
}
fun <T> Deserializer.deserializeSetOf(deserializeElement: (Deserializer) -> T): Set<T> {
val length = deserialize_len()
val set = mutableSetOf<T>()
repeat(length.toInt()) {
set.add(deserializeElement(this))
}
return set
}