extism-pdk 1.2.0

Extism Plug-in Development Kit (PDK) for Rust
Documentation
#![no_main]

use extism_pdk::*;

const VOWELS: &[char] = &['a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U'];

#[derive(serde::Serialize, ToBytes)]
#[encoding(Json)]
struct TestOutput {
    pub count: i32,
    // pub config: String,
    // pub a: String,
    // pub b: &'a str,
}

#[plugin_fn]
pub unsafe fn count_vowels<'a>(input: String) -> FnResult<TestOutput> {
    let mut count = 0;
    for ch in input.chars() {
        if VOWELS.contains(&ch) {
            count += 1;
        }
    }

    // set_var!("a", "this is var a")?;

    // let a = var::get("a")?.expect("variable 'a' set");
    // let a = String::from_utf8(a).expect("string from varible value");
    // let config = config::get("thing")?.expect("'thing' key set in config");
    // let b = "new_value";

    let output = TestOutput {
        count,
        // config,
        // a,
        // b,
    };
    Ok(output)
}