Search code examples
rustwebassemblywasm-bindgen

How can I convert JsString into &str in Rust WASM?


How can I convert an instance of type js_sys::JsString into &str within Rust WebAssembly code?

Background: I'd like to convert the code found in this SO answer into Rust. I struggle to pass the output of js_sys::encode_uri_component as the value parameter to web_sys::Element::set_attribute:

let url = JsString::from("data:text/plain;charset=utf-8,");
url = url.concat(&js_sys::encode_uri_component(&text));

let anchor = document.create_element("a")
    .and_then(|elm| elm.dyn_into::<web_sys::HtmlElement>())?;
anchor.set_attribute("href", &url)?;  // Error: expected `str`, found struct `js_sys::JsString`
// ...

Solution

  • As indicated by user Shepmaster in the question comments above the solution is that simple:

    let x: String = url.into()