pub fn serialize<T, S>(
    value: &T,
    serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where T: Serialize, S: Serializer,