INNER CODE UNIT · Rust
wrap
sonos/tract · api/ffi/src/lib.rs:30
fn wrap<F: FnOnce() -> anyhow::Result<()>>(func: F) -> TRACT_RESULT {
match func() {
Ok(_) => TRACT_RESULT::TRACT_RESULT_OK,
Err(e) => {
let msg = format!("{e:?}");
if std::env::var("TRACT_ERROR_STDERR").is_ok() {
eprintln!("{msg}");
}
LAST_ERROR.with(|p| {
*p.borrow_mut() = Some(CString::new(msg).unwrap_or_else(|_| {
CString::new("tract error message contains 0, can't convert to CString")
.unwrap()
}))
});
TRACT_RESULT::TRACT_RESULT_KO
}
}
}