adapter-extism 0.2.0

An Adapter for adapting the Extism library to the Adapter API.
Documentation
extern crate adapter;
extern crate adapter_extism;
extern crate extism;

use adapter::Adapter;
use adapter_extism::ExtismAdapter;

fn main() {
    let uri = "https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm";

    let mut adapter = ExtismAdapter::from_url(uri).unwrap();

    let identifier = "count_vowels";
    let input = "Hello, world!";

    let output: &str = adapter.call(identifier, input).unwrap();

    assert_eq!(output, r#"{"count":3,"total":3,"vowels":"aeiouAEIOU"}"#);

    let generic_output = generic_function(&mut adapter, identifier, input).unwrap();

    assert_eq!(
        generic_output,
        r#"{"count":3,"total":6,"vowels":"aeiouAEIOU"}"#
    );
}

fn generic_function<'a, T>(
    adapter: &'a mut T,
    identifier: T::Identifier,
    input: &'a str,
) -> Result<&'a str, T::Error>
where
    T: Adapter<'a, &'a str, &'a str> + 'a,
{
    adapter.call(identifier, input)
}