如何将 wasm 特定的宏与函数和结构解耦

How do I decouple wasm specific macros from functions and structs

我有一些核心功能,主要是我试图在 Web 程序集和 java.

中重用的算法

我正在使用 wasm-bindgen 和 serde,我注意到 wasm-bindgen 和 serde 通过使用属性与我的算法紧密耦合。 IE; #[wasm_bindgen]#[derive(Serialize, Deserialize)]——我对 Rust 很陌生,所以我想知道如何将这些属性与我的函数和结构分离,以便我可以在我的实现中重用我的函数和结构,这将与 java 的接口。目前因为它们紧密耦合,如果我尝试在非 wasm 的平台上使用这些函数,它会引发恐慌。

SerializeDeserialize 不是 wasm 特有的,在其他平台上也可用。

对于 wasm_bindgen,如果将 #[wasm_bindgen 替换为 #[cfg_attr (wasm, wasm_bindgen)],则可以使用 cfg_attr 属性仅为 wasm 平台定义它。