pub fn bind<I, J, F, T, K>(
    portal: &str,
    statement: &str,
    formats: I,
    values: J,
    serializer: F,
    result_formats: K,
    buf: &mut BytesMut
) -> Result<(), BindError>where
    I: IntoIterator<Item = i16>,
    J: IntoIterator<Item = T>,
    F: FnMut(T, &mut BytesMut) -> Result<IsNull, Box<dyn Error + Sync + Send>>,
    K: IntoIterator<Item = i16>,