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"),
}
}