main.rs

 1use core::slice;
 2use plugin::prelude::*;
 3
 4#[no_mangle]
 5pub extern "C" fn banana(ptr: *const u8, len: usize) -> *const Buffer {
 6    // setup
 7    let buffer = Buffer { ptr, len };
 8    let data = unsafe { buffer.to_vec() };
 9    // operation
10    // let reversed: Vec<u8> = data.into_iter().rev().collect();
11    let number: f64 = bincode::deserialize(&data).unwrap();
12    let new_number = number * 2.0;
13    let new_data = bincode::serialize(&new_number).unwrap();
14    // teardown
15    let new_buffer = unsafe { Buffer::from_vec(new_data) };
16    return new_buffer.leak_to_heap();
17}
18
19pub fn banana2(number: f64) -> f64 {
20    number * 2.0
21}
22
23#[bind]
24pub fn sum_lengths(strings: Vec<String>) -> usize {
25    let mut total = 0;
26    for string in strings {
27        total += string.len();
28    }
29    return total;
30}
31
32pub fn main() -> () {
33    ()
34}