The value in `encoder.encodeSerializableValue(serializers[0]!!(), value)` will error with type misma...
s
The value in
encoder.encodeSerializableValue(serializers[0]!!(), value)
will error with type mismatch. Expected
CapturedType(out X*>)
but X`<*>`. How to pass the value?
Copy code
// An external class from lib
class X<T>

object XSerializer : KSerializer<X<Int>> {
    override val descriptor: SerialDescriptor
        get() = TODO("Not yet implemented")

    override fun deserialize(decoder: Decoder): X<Int> {
        TODO("Not yet implemented")
    }

    override fun serialize(encoder: Encoder, value: X<Int>) {
        TODO("Not yet implemented")
    }
}

// A map to take correct serializer by arg
val serializers: Map<Int, () ->  KSerializer<out X<*>>> = mapOf(0 to { XSerializer })

object GenericSerializer : KSerializer<X<*>> {
    override val descriptor: SerialDescriptor
        get() = TODO("Not yet implemented")

    override fun deserialize(decoder: Decoder): X<*> {
        TODO("Not yet implemented")
    }

    override fun serialize(encoder: Encoder, value: X<*>) {
        encoder.encodeSerializableValue(serializers[0]!!(), value)
    }
}
There is a link testable. https://pl.kotl.in/VVNMv8Zso