use crate::error::Unavailability;
use crate::ffi;
#[derive(Debug, Clone, Copy)]
pub struct SystemLanguageModel;
impl SystemLanguageModel {
#[must_use]
pub fn is_available() -> bool {
unsafe { ffi::fm_system_model_is_available() }
}
#[must_use]
pub fn availability() -> Availability {
let code = unsafe { ffi::fm_system_model_availability_code() };
match code {
0 => Availability::Available,
1 => Availability::Unavailable(Unavailability::DeviceNotEligible),
2 => Availability::Unavailable(Unavailability::AppleIntelligenceNotEnabled),
3 => Availability::Unavailable(Unavailability::ModelNotReady),
-1 => Availability::Unavailable(Unavailability::OsTooOld),
_ => Availability::Unavailable(Unavailability::Unknown),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum Availability {
Available,
Unavailable(Unavailability),
}