pub fn parse_urlencoded_params_bytes(args: &mut RequestField, query: &[u8]) {
    for kv in query.split(|x| *x == b'&') {
        let (k, v) = match kv.splitn(2, |x| *x == b'=').collect_tuple() {
            Some((k, v)) => (urldecode_bytes_str(k), urldecode_bytes_str(v)),
            None => (urldecode_bytes_str(kv), String::new()),
        };
        args.add(k, DataSource::X(XDataSource::Uri), v);
    }
}
/// parses query parameters, that look like a=b&c=d
parses query parameters, that look like a=b&c=d
parses query parameters that look like a = b&c = d
pub fn parse_urlencoded_params_bytes(args: &mut RequestField, query: &[u8]) {
    for kv in query.split(|x| *x == b'&') {
        let (k, v) = match kv.splitn(2, |x| *x == b'=').collect_tuple() {
            Some((k, v)) => (urldecode_bytes_str(k), urldecode_bytes_str(v)),
            None => (urldecode_bytes_str(kv), String::new()),
        };
        args.add(k, DataSource::X(XDataSource::Uri), v);
    }
}
pub fn parse_urlencoded_params_bytes ( args : & mut RequestField , query : & [ u8 ] ) { for kv in query . split ( | x | * x == b'&' ) { let ( k , v ) = match kv . splitn ( 2 , | x | * x == b'=' ) . collect_tuple ( ) { Some ( ( k , v ) ) => ( urldecode_bytes_str ( k ) , urldecode_bytes_str ( v ) ) , None => ( urldecode_bytes_str ( kv ) , String :: new ( ) ) , } ; args . add ( k , DataSource :: X ( XDataSource :: Uri ) , v ) ; } }
parses query parameters, that look like a=b&c=d
parses query parameters that look like a = b&c = d
args
&mut RequestField
query
&[u8]