a3s-runtime 0.2.0

Provider-neutral execution contract and client for A3S runtimes
Documentation
use thiserror::Error;

pub type RuntimeResult<T> = Result<T, RuntimeError>;

#[derive(Debug, Error)]
pub enum RuntimeError {
    #[error("invalid Runtime request: {0}")]
    InvalidRequest(String),
    #[error("Runtime unit {unit_id:?} was not found")]
    NotFound { unit_id: String },
    #[error("Runtime request {request_id:?} conflicts with a prior request")]
    RequestConflict { request_id: String },
    #[error("Runtime request {request_id:?} for unit {unit_id:?} was not found")]
    RequestNotFound { unit_id: String, request_id: String },
    #[error(
        "Runtime unit {unit_id:?} rejected stale generation {requested}; current generation is {current}"
    )]
    StaleGeneration {
        unit_id: String,
        requested: u64,
        current: u64,
    },
    #[error("Runtime unit {unit_id:?} has conflicting content for generation {generation}")]
    GenerationConflict { unit_id: String, generation: u64 },
    #[error("Runtime request deadline has expired: {0}")]
    DeadlineExceeded(String),
    #[error("Runtime provider lacks required capabilities: {0:?}")]
    UnsupportedCapabilities(Vec<String>),
    #[error("Runtime provider is unavailable: {0}")]
    ProviderUnavailable(String),
    #[error("Runtime transport failed: {0}")]
    Transport(String),
    #[error("Runtime protocol failed: {0}")]
    Protocol(String),
}