Add helper macro to implement bincode serialization of program-specific errors

This commit is contained in:
Tyera Eulberg 2019-03-11 14:25:08 -06:00 committed by Greg Fitzgerald
parent 804378e8f7
commit db5370c5df
1 changed files with 14 additions and 0 deletions

View File

@ -51,6 +51,20 @@ impl std::fmt::Display for ProgramError {
}
impl std::error::Error for ProgramError {}
// Convenience macro to serialize (and potentially truncate) a program-specific error to pass in
// ProgramError::CustomError
#[macro_export]
macro_rules! custom_error(
($program_error:expr) => ({
use bincode::serialize;
let mut error = serialize(&$program_error).expect("failed to serialize program error");
if error.len() > 32 {
error.truncate(32);
}
error
});
);
// All native programs export a symbol named process()
pub const ENTRYPOINT: &str = "process";