1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use crate::common::data::Data; // TODO: macro for data extraction? // TODO: generalize binop/triop? /// Destructures a Rasserine tuple of two items into /// A Rust tuple of two items. pub fn binop(data: Data) -> (Data, Data) { match data { Data::Tuple(t) if t.len() == 2 => (t[0].clone(), t[1].clone()), _ => unreachable!("bad data layout passed to ffi"), } } /// Destructures a Rasserine tuple of three items into /// A Rust tuple of three items. pub fn triop(data: Data) -> (Data, Data, Data) { match data { Data::Tuple(t) if t.len() == 3 => (t[0].clone(), t[1].clone(), t[2].clone()), _ => unreachable!("bad data layout passed to ffi"), } }