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}