26 个版本 (8 个破坏性版本)

0.14.0 2024 年 2 月 21 日
0.12.0 2024 年 2 月 8 日
0.10.3 2023 年 12 月 28 日
0.10.1 2023 年 10 月 24 日
0.6.10 2021 年 6 月 15 日

#28 in #marine

Download history 1071/week @ 2024-04-09 891/week @ 2024-04-16 711/week @ 2024-04-23 463/week @ 2024-04-30 689/week @ 2024-05-07 2043/week @ 2024-05-14 1457/week @ 2024-05-21 1220/week @ 2024-05-28 1313/week @ 2024-06-04 591/week @ 2024-06-11 627/week @ 2024-06-18 934/week @ 2024-06-25 300/week @ 2024-07-02 608/week @ 2024-07-09 1451/week @ 2024-07-16 896/week @ 2024-07-23

3,407 每月下载量
用于 40 个 crate (4 个直接使用)

Apache-2.0

145KB
3K SLoC

定义了 #[marine] 宏,该宏应与所有导出函数和 extern 块一起使用。目前,它支持以下类型,这些类型可以用作导出或 foreign 函数的参数:i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, bool, String, Vec。此外,所有字段都是公共的并且具有上述类型的 struct 也可以用作参数。在这种情况下,#[marine] 也应应用于这些 struct。

示例

此示例展示了如何导出函数

#[marine]
pub fn greeting(name: String) -> String {
    format!("Hi {}", name)
}

此更复杂的示例展示了如何从另一个 Wasm 模块导入函数以及如何传递 struct

use marine_rs_sdk::MountedBinaryResult;

#[marine]
pub fn read_ipfs_file(file_path: String) -> MountedBinaryResult {
    let hash = calculate_hash(file_path);
    ipfs(vec![hash])
}

#[marine]
#[link(wasm_import_module = "ipfs_node")]
extern "C" {
    pub fn ipfs(file_hash: Vec<String>) -> MountedBinaryResult;
}

依赖项

~0.8–1.7MB
~37K SLoC