1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use std::ffi::*; use virt; #[derive(Clone)] pub struct VirError { pub code: i8, pub domain: i8, pub message: String, pub level: i8, } impl VirError { pub fn new() -> VirError { unsafe { let ptr: virt::virErrorPtr = virt::virGetLastError(); let err = VirError { code: (*ptr).code as i8, domain: (*ptr).domain as i8, message: String::from_utf8_lossy(CStr::from_ptr((*ptr).message).to_bytes()).into_owned(), level: (*ptr).level as i8, }; virt::virResetError(ptr); err } } }