#![feature(doc_cfg)]
use msg::MaaMsg;
use serde::{Deserialize, Serialize};
#[cfg(feature = "internal")]
#[doc(cfg(feature = "internal"))]
pub mod internal;
#[cfg(not(feature = "internal"))]
mod internal;
#[cfg(feature = "toolkit")]
#[doc(cfg(feature = "toolkit"))]
pub mod toolkit;
pub mod custom;
#[cfg(feature = "sync_context")]
#[doc(cfg(feature = "sync_context"))]
pub mod sync_context;
pub mod buffer;
pub mod controller;
pub mod diff_task;
pub mod error;
pub mod instance;
pub mod msg;
pub mod resource;
pub mod utility;
use error::Error;
pub type MaaResult<T> = Result<T, error::Error>;
#[derive(Debug, Serialize, Deserialize)]
pub enum MaaStatus {
Invalid,
Pending,
Running,
Success,
Failed,
}
impl TryFrom<internal::MaaStatus> for MaaStatus {
type Error = error::Error;
fn try_from(status: internal::MaaStatus) -> Result<Self, Self::Error> {
match status {
internal::MaaStatusEnum_MaaStatus_Invalid => Ok(MaaStatus::Invalid),
internal::MaaStatusEnum_MaaStatus_Pending => Ok(MaaStatus::Pending),
internal::MaaStatusEnum_MaaStatus_Running => Ok(MaaStatus::Running),
internal::MaaStatusEnum_MaaStatus_Success => Ok(MaaStatus::Success),
internal::MaaStatusEnum_MaaStatus_Failed => Ok(MaaStatus::Failed),
_ => Err(error::Error::MaaStatusConversionError(status)),
}
}
}
pub trait CallbackHandler {
fn handle(&mut self, msg: MaaMsg);
}
pub fn maa_version() -> String {
let version = unsafe { internal::MaaVersion() };
string!(version)
}