Rust wasm:如何从 web-sys 访问 HTMLDocument?

Rust wasm : How to access HTMLDocument from web-sys?

使用 web-sys crate 我想从 HTMLDocument 访问 cookie method

我想做这样的事情。确实这行不通。

let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let cookie = document.cookie().unwrap();
//no method named `cookie` found for type `web_sys::features::gen_Document::Document` in the current scope

我需要访问 HTMLDocument 结构而不是 Document 结构。

Cargo.toml 启用了功能。

~snip~
[dependencies.web-sys]
version = "0.3.4"
features = [
  "WebSocket",
  'Window',
  'Document',
  'HtmlDocument',
]

根据 API 它应该像文档一样可以在 Window 下访问。

它似乎不适用于类似的东西:

let html_document = window.html_document().unwrap();

documentation HTMLDocument 应该扩展 Document。

我知道 Rust 中没有继承,但是 我不能这样从文档转换它:

let html_document = web_sys::HtmlDocument::from(document);

into功能相同。

是否可以通过这种方式访问​​ HTMLDocument?

还有其他方法可以使用 web-sys 访问 cookie 吗?

是否有正在进行的工作目前无法正常工作?

您需要的是 动态转换,这是通过 wasm_bindgen::JsCast::dyn_into():

完成的
use wasm_bindgen::JsCast;

let window = web_sys::window().unwrap();
let document = window.document().unwrap();
let html_document = document.dyn_into::<web_sys::HtmlDocument>().unwrap();
let cookie = html_document.cookie().unwrap();

还有不消耗原始对象的变体wasm_bindgen::JsCast::dyn_ref()