1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#[derive(Deserialize)]
pub struct Reason<T> {
pub kind: String,
pub details: T,
}
impl<T: for<'a> ::serde::Deserialize<'a>> Reason<T> {
pub fn load() -> Option<Reason<T>> {
let raw_len = unsafe { ::sys::_reason_len() };
let mut raw = Vec::with_capacity(raw_len);
unsafe { raw.set_len(raw_len) };
unsafe { ::sys::_reason(raw.as_mut_ptr()) };
match ::serde_json::from_slice(&raw) {
Ok(v) => Some(v),
Err(_) => None,
}
}
}