pub mod config;
pub mod conversion;
pub mod traits;
pub mod zero_copy;
#[cfg(any(target_os = "ios", target_os = "android"))]
pub mod mobile_ffi;
pub use config::{
DiagnosticsConfig, EcosystemConfig, EcosystemConfigBuilder, LogLevel, MemoryConfig,
ModuleConfig, NumericConfig, ParallelConfig, Precision, PrecisionConfig,
};
pub use conversion::{
ArrayConvert, ConversionError, ConversionOptions, ConversionResult, CrossModuleConvert,
DataFlowConverter, LosslessConvert, LossyConvert, TypeAdapter,
};
pub use traits::{
Composable, Configurable, CrossModuleOperator, DataConsumer, DataProvider, Diagnosable,
Identifiable, ModuleCapability, ModuleInterface, ResourceAware, Serializable,
VersionedInterface,
};
pub use zero_copy::{
Alignment, ArrayBridge, BorrowedArray, BufferMut, BufferRef, ContiguousMemory, MemoryLayout,
OwnedArray, SharedArrayView, SharedArrayViewMut, TypedBuffer, ZeroCopyBuffer, ZeroCopySlice,
};
pub mod prelude {
pub use super::config::{
DiagnosticsConfig, EcosystemConfig, EcosystemConfigBuilder, LogLevel, MemoryConfig,
ModuleConfig, NumericConfig, ParallelConfig, Precision, PrecisionConfig,
};
pub use super::conversion::{
ArrayConvert, ConversionError, ConversionOptions, ConversionResult, CrossModuleConvert,
DataFlowConverter, LosslessConvert, LossyConvert, TypeAdapter,
};
pub use super::traits::{
Composable, Configurable, CrossModuleOperator, DataConsumer, DataProvider, Diagnosable,
Identifiable, ModuleCapability, ModuleInterface, ResourceAware, Serializable,
VersionedInterface,
};
pub use super::zero_copy::{
Alignment, ArrayBridge, BorrowedArray, BufferMut, BufferRef, ContiguousMemory,
MemoryLayout, OwnedArray, SharedArrayView, SharedArrayViewMut, TypedBuffer, ZeroCopyBuffer,
ZeroCopySlice,
};
}
#[derive(Debug, Clone, PartialEq)]
pub enum IntegrationError {
ConfigError(String),
ConversionError(String),
LayoutError(String),
CompatibilityError(String),
ResourceError(String),
InvalidOperation(String),
}
impl std::fmt::Display for IntegrationError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
IntegrationError::ConfigError(msg) => write!(f, "Configuration error: {msg}"),
IntegrationError::ConversionError(msg) => write!(f, "Conversion error: {msg}"),
IntegrationError::LayoutError(msg) => write!(f, "Layout error: {msg}"),
IntegrationError::CompatibilityError(msg) => write!(f, "Compatibility error: {msg}"),
IntegrationError::ResourceError(msg) => write!(f, "Resource error: {msg}"),
IntegrationError::InvalidOperation(msg) => write!(f, "Invalid operation: {msg}"),
}
}
}
impl std::error::Error for IntegrationError {}
pub type IntegrationResult<T> = Result<T, IntegrationError>;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_integration_error_display() {
let err = IntegrationError::ConfigError("test error".to_string());
assert_eq!(err.to_string(), "Configuration error: test error");
}
}