pub fn deserialize<'de, E: Variants, D: Deserializer<'de>>( deserializer: D, ) -> Result<E, D::Error>