use thiserror::Error; #[derive(Debug, Error)] pub enum PlatformError { #[error("{0}: {1}")] Generic(String, String), } impl PlatformError { pub fn new(kind: &str, message: &str) -> Self { PlatformError::Generic(kind.to_string(), message.to_string()) } } #[cfg(target_os = "macos")] pub fn is_osx() -> bool { true } #[cfg(not(target_os = "macos"))] pub fn is_osx() -> bool { false } #[cfg(target_os = "linux")] pub fn is_linux() -> bool { true } #[cfg(not(target_os = "linux"))] pub fn is_linux() -> bool { false } #[cfg(target_arch = "aarch64")] pub fn is_arm() -> bool { true } #[cfg(not(target_arch = "aarch64"))] pub fn is_arm() -> bool { false } #[cfg(target_arch = "x86_64")] pub fn is_x86() -> bool { true } #[cfg(not(target_arch = "x86_64"))] pub fn is_x86() -> bool { false } pub fn check_linux_x86() -> Result<(), PlatformError> { if is_linux() && is_x86() { Ok(()) } else { Err(PlatformError::new( "Platform Check Error", "This operation is only supported on Linux x86_64.", )) } } pub fn check_macos_arm() -> Result<(), PlatformError> { if is_osx() && is_arm() { Ok(()) } else { Err(PlatformError::new( "Platform Check Error", "This operation is only supported on macOS ARM.", )) } }