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
//! VM runtime context definitions
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
/// Runtime context description.
pub enum Context {
/// Current context is a predicate verification.
Predicate,
/// Current context is a script execution.
Script,
/// Current context is under a `CALL` scop.e
Call,
/// No transaction initialized/invalid context.
NotInitialized,
}
impl Default for Context {
fn default() -> Self {
Self::NotInitialized
}
}
impl Context {
/// Return `true` if the context is external; `false` otherwise.
pub const fn is_external(&self) -> bool {
matches!(self, Self::Predicate | Self::Script)
}
}