pub fn serialize<T: Serialize, S: Serializer>(
    data: &Arc<T>,
    serializer: S
) -> Result<S::Ok, S::Error>