Function osiris_process::operation::error::promote
source · pub fn promote<T>(memory_result: MemoryResult<T>) -> OperationResult<T>Expand description
Some sugar to wrap a MemoryError in a OperationError::MemoryError or to return a Ok value as is :
use osiris_data::memory::{Memory, MemoryError, MemoryResult};
use osiris_process::operation::error::{OperationError, promote};
let mut mem = Memory::with_size(1);
let m: MemoryResult<()> = mem.free(2);
let o = promote(m);
if let Err(OperationError::MemoryError(MemoryError::CannotFree {trying_to_free: 2,memory_len: 1})) = o {
assert!(true)
} else { assert!(false) }
let m: MemoryResult<()> = mem.free(1);
let o = promote(m);
if let Ok(()) = o { assert!(true) } else { assert!(false) }
assert!(mem.is_empty());