У меня есть несколько параметров, таких как:
{'peer_id': '-PC0001-781232119400', 'port': 6889, 'event': 'started', 'compact': 1, 'left': 2097152000, 'uploaded': 0, 'info_hash': b'\xd5@\xfcH\xeb\x12\xf2\x831c\xee\xd6B\x1dD\x9d\xd8\xf1\xce\x1f', 'downloaded': 0}
Я бы хотел, чтобы все они были закодированы в строку, например, так:
my_url?peer_id=-PC0001-781232119400&port=6889&event=started&compact=1&left=1&uploaded=0&info_hash=%D5%40%FCH%EB%12%F2%831c%EE%D6B%1DD%9D%D8%F1%CE%1F&downloaded=0"
Я играл с urlcodeи придумать это:
extern crate url;
use url::form_urlencoded;
fn main() {
let encoded: String = form_urlencoded::Serializer::new(String::new())
.append_pair("foo", "bar & baz")
.append_pair("saison", "Été+hiver")
.finish();
println!("{:?}", encoded);
}
Проблема в том, что apprend_pair
принимает пару &'str
- она не принимает байтов ... Я не уверен, как достичь своей цели.
В python я бы просто использовал встроенный from urllib.parse import urlencode
и сделал бы urlencode(params)