Веб-системный документ Rust-анализатора»неизвестен»

#rust #rust-analyzer

Вопрос:

Почему является объектом документа unknown . На самом деле, все, даже window.document звонок, не привязано. Линтинг очень важен для меня, чтобы использовать новый язык программирования/библиотеку.

lib.rs

 use wasm_bindgen::prelude::*;

#[wasm_bindgen(start)]
pub fn run() -> Result<(), JsValue> {
    let window = web_sys::window().expect("could not get window handle");
    let document = window.document().expect("could not get document handle");

    let body = document.body().expect("could not get body handle");

    let val = document.create_element("p")?;
    val.set_text_content(Some("Hello from rust"));

    body.append_child(amp;val)?;

    Ok(())
}
 

груз.томл

 [lib]
crate-type = ["cdylib"]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
wasm-bindgen = { version = "0.2", features = ["serde-serialize"] }

[dependencies.web-sys]
version = "0.3.53"
features = [
    "Document",
    "Element",
    "HtmlElement",
    "Node",
    "Window",
]
 

введите описание изображения здесь

Комментарии:

1. rust-analyzer не идеален, он не всегда может выводить типы. Вы можете добавить описания типов вручную, если это для вас проблема.

2. @Smitop Ну, добавление типов не помогает, методы структуры все равно не отображаются. Теперь они показывают правильный тип при наведении, но это не очень полезно 🙁

3. @Smitop на самом деле, даже если я беру cont: amp;HtmlElement аргумент функции as, никакие методы не подключаются cont . К сожалению, языковой сервер rust еще хуже 🙁 Может быть, он неправильно определяет массив функций?

4. Я сомневаюсь, что вы получите ответ, выходящий за рамки того, что уже сказано: «rust-анализатор не идеален» . Я вижу, что он чаще всего терпит неудачу, как это, в коде с большим количеством макросов ( сильно web_sys зависит #[wasm_bindgen] от его типов). Вместо надлежащих аннотаций типа IDE я предлагаю потратить время на изучение документации по docs.rs .

5. @kmdreko хорошо… стоит ли открывать какой-то вопрос? Я сделаю все, что в моих силах, чтобы помочь, но, к сожалению, я недостаточно квалифицирован, чтобы работать над чем-то подобным.