macro_rules! ionc { ($e:expr) => { ... }; }
Expand description
Macro to transform Ion C error code expressions into Result<(), IonCError>
.
Higher-level facades over Ion C functions could map this to Result<T, IonCError>
or the like.
NB: ionc!
implies unsafe
code.
Usage
let mut data = String::from("42");
let mut ion_reader: hREADER = ptr::null_mut();
let mut ion_type: ION_TYPE = ptr::null_mut();
ionc!(
ion_reader_open_buffer(
&mut ion_reader,
data.as_mut_ptr(),
data.len() as i32,
ptr::null_mut()
)
)?;
ionc!(ion_reader_next(ion_reader, &mut ion_type))?;
assert_eq!(ion_type as u32, tid_INT_INT);
let mut value = 0;
ionc!(ion_reader_read_int64(ion_reader, &mut value))?;
assert_eq!(value, 42);
ionc!(ion_reader_close(ion_reader))