Используя wasm_bindgen
с serde
, я пытаюсь вернуть JsValue
для сложной структуры с использованием идиоматической ржавчины.Я создал отдельный пример для иллюстрации ошибки, которую я вижу.
объявление структуры:
#[derive(Serialize)]
pub struct BookStoreData {
pub h: HashMap<String, String>,
pub name: String,
}
определение функции:
#[wasm_bindgen]
pub fn hello_hash(count: i32) -> Result<JsValue, JsValue> {
set_panic_hook();
let mut book_reviews = HashMap::new();
book_reviews.insert(
"Grimms' Fairy Tales".to_string(),
"Masterpiece.".to_string(),
);
let data = BookStoreData {
h: book_reviews,
name: "My Book Store".to_string(),
};
let js_result: JsValue = JsValue::from_serde(&data).unwrap();
OK(js_result)
}
Я получил этоошибка компиляции:
error[E0425]: cannot find function `OK` in this scope
--> src/hello_whatever.rs:46:5
|
46 | OK(js_result)
| ^^ help: a tuple variant with a similar name exists: `Ok`
Вы можете увидеть полный пример на основе rust-parcel-template
Чтобы воспроизвести ошибку, изкорень репо, запустите npm run start
или cd crate && cargo build