memlink-msdk 0.1.2

memlink SDK - Build modules for the memlink runtime with automatic serialization and FFI exports
Documentation
#![allow(non_camel_case_types, non_upper_case_globals)]

use memlink_msdk::prelude::*;

#[memlink_export]
pub fn echo(_ctx: &CallContext, input: String) -> Result<String> {
    Ok(input)
}

#[memlink_export]
pub fn add(_ctx: &CallContext, a: u32, b: u32) -> Result<u32> {
    Ok(a + b)
}

#[memlink_export]
pub fn greet(_ctx: &CallContext, name: String) -> Result<String> {
    Ok(format!("Hello, {}!", name))
}

#[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
pub struct UserData {
    pub id: u32,
    pub name: String,
    pub score: u64,
}

#[memlink_export]
pub fn process_user(_ctx: &CallContext, user: UserData) -> Result<UserData> {
    Ok(UserData {
        id: user.id,
        name: user.name.to_uppercase(),
        score: user.score * 2,
    })
}

fn main() {
    println!("memlink-msdk example");
    println!("Exported functions: echo, add, greet, process_user");
}