web-sys
中的類型轉換
大多數在 WebIDL (所有 Web API 的介面定義語言) 中指定的類型,都有相對簡單的轉換到 web-sys
中,但特別值得提出一些
-
BufferSource
和ArrayBufferView
- 這兩種型別出現在許多通常處理位元組緩衝區的 API 中。我們在web-sys
中使用兩種不同的類型將它們綁定,js_sys::Object
和&mut [u8]
。使用js_sys::Object
可以傳入表示位元組視圖的任意 JS 值 (例如任何型別化的陣列物件),而&mut [u8]
則允許在 Rust 中使用原始切片。不幸的是,我們必須悲觀地假設 JS 會修改所有切片,因為我們目前沒有關於它們是否被修改的資訊。 -
回呼都以
js_sys::Function
表示。這表示所有通過web-sys
的回呼都是原始 JS 值。您可以使用實際的js_sys::Function
實例來處理此問題,或者您可以建立Closure<dyn FnMut(...)>
,使用as_ref
提取底層的JsValue
,然後使用JsCast::unchecked_ref
將其轉換為js_sys::Function
。