Rust/encodeURIComponent
From Legoktm
fn encode_uri_component(component: &str) -> String {
use percent_encoding::{utf8_percent_encode, AsciiSet, CONTROLS};
const COMPONENT: &AsciiSet = &CONTROLS
// query set
.add(b' ')
.add(b'"')
//.add(b'#')
.add(b'<')
.add(b'>')
// path set
.add(b'?')
.add(b'`')
.add(b'{')
.add(b'}')
// userinfo set
.add(b'/')
.add(b':')
.add(b';')
.add(b'=')
.add(b'@')
.add(b'[')
.add(b'\\')
.add(b']')
.add(b'^')
// component set
.add(b'$')
.add(b'%')
.add(b'&')
.add(b'+')
.add(b',');
utf8_percent_encode(component, COMPONENT).to_string()
}