#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 хорошо… стоит ли открывать какой-то вопрос? Я сделаю все, что в моих силах, чтобы помочь, но, к сожалению, я недостаточно квалифицирован, чтобы работать над чем-то подобным.