1pub mod config;
31pub mod conversion;
32pub mod traits;
33pub mod zero_copy;
34
35#[cfg(any(target_os = "ios", target_os = "android"))]
37pub mod mobile_ffi;
38
39pub use config::{
41 DiagnosticsConfig, EcosystemConfig, EcosystemConfigBuilder, LogLevel, MemoryConfig,
42 ModuleConfig, NumericConfig, ParallelConfig, Precision, PrecisionConfig,
43};
44pub use conversion::{
45 ArrayConvert, ConversionError, ConversionOptions, ConversionResult, CrossModuleConvert,
46 DataFlowConverter, LosslessConvert, LossyConvert, TypeAdapter,
47};
48pub use traits::{
49 Composable, Configurable, CrossModuleOperator, DataConsumer, DataProvider, Diagnosable,
50 Identifiable, ModuleCapability, ModuleInterface, ResourceAware, Serializable,
51 VersionedInterface,
52};
53pub use zero_copy::{
54 Alignment, ArrayBridge, BorrowedArray, BufferMut, BufferRef, ContiguousMemory, MemoryLayout,
55 OwnedArray, SharedArrayView, SharedArrayViewMut, TypedBuffer, ZeroCopyBuffer, ZeroCopySlice,
56};
57
58pub mod prelude {
60 pub use super::config::{
61 DiagnosticsConfig, EcosystemConfig, EcosystemConfigBuilder, LogLevel, MemoryConfig,
62 ModuleConfig, NumericConfig, ParallelConfig, Precision, PrecisionConfig,
63 };
64 pub use super::conversion::{
65 ArrayConvert, ConversionError, ConversionOptions, ConversionResult, CrossModuleConvert,
66 DataFlowConverter, LosslessConvert, LossyConvert, TypeAdapter,
67 };
68 pub use super::traits::{
69 Composable, Configurable, CrossModuleOperator, DataConsumer, DataProvider, Diagnosable,
70 Identifiable, ModuleCapability, ModuleInterface, ResourceAware, Serializable,
71 VersionedInterface,
72 };
73 pub use super::zero_copy::{
74 Alignment, ArrayBridge, BorrowedArray, BufferMut, BufferRef, ContiguousMemory,
75 MemoryLayout, OwnedArray, SharedArrayView, SharedArrayViewMut, TypedBuffer, ZeroCopyBuffer,
76 ZeroCopySlice,
77 };
78}
79
80#[derive(Debug, Clone, PartialEq)]
82pub enum IntegrationError {
83 ConfigError(String),
85 ConversionError(String),
87 LayoutError(String),
89 CompatibilityError(String),
91 ResourceError(String),
93 InvalidOperation(String),
95}
96
97impl std::fmt::Display for IntegrationError {
98 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
99 match self {
100 IntegrationError::ConfigError(msg) => write!(f, "Configuration error: {msg}"),
101 IntegrationError::ConversionError(msg) => write!(f, "Conversion error: {msg}"),
102 IntegrationError::LayoutError(msg) => write!(f, "Layout error: {msg}"),
103 IntegrationError::CompatibilityError(msg) => write!(f, "Compatibility error: {msg}"),
104 IntegrationError::ResourceError(msg) => write!(f, "Resource error: {msg}"),
105 IntegrationError::InvalidOperation(msg) => write!(f, "Invalid operation: {msg}"),
106 }
107 }
108}
109
110impl std::error::Error for IntegrationError {}
111
112pub type IntegrationResult<T> = Result<T, IntegrationError>;
114
115#[cfg(test)]
116mod tests {
117 use super::*;
118
119 #[test]
120 fn test_integration_error_display() {
121 let err = IntegrationError::ConfigError("test error".to_string());
122 assert_eq!(err.to_string(), "Configuration error: test error");
123 }
124}