16 releases

0.7.1 Sep 8, 2022
0.7.0 Jul 27, 2022
0.6.15 Nov 2, 2021
0.6.14 Oct 7, 2021
0.6.9 May 19, 2021

#9 in #marine

Download history 562/week @ 2023-02-03 493/week @ 2023-02-10 695/week @ 2023-02-17 728/week @ 2023-02-24 348/week @ 2023-03-03 384/week @ 2023-03-10 609/week @ 2023-03-17 471/week @ 2023-03-24 453/week @ 2023-03-31 533/week @ 2023-04-07 434/week @ 2023-04-14 344/week @ 2023-04-21 396/week @ 2023-04-28 247/week @ 2023-05-05 228/week @ 2023-05-12 94/week @ 2023-05-19

1,051 downloads per month
Used in 33 crates (4 directly)

Apache-2.0

140KB
3K SLoC

Defines the #[marine] macro that should be used with all export functions, extern blocks. At now, It supports the following types that could be used as parameters in export or foreign functions: i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, bool, String, Vec. Also struct where all fields are public and have aforementioned types could be used as parameters. In this case #[marine] should be also applied to this structs.

Examples

This example shows how a function could be exported:

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

This more complex example shows how a function could be imported from another Wasm module and how a struct could be passed:

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;
}

Dependencies

~0.9–1.6MB
~38K SLoC