Skip to main content

ass_core/utils/errors/
mod.rs

1//! Core error types for ASS-RS utilities and cross-module error handling
2//!
3//! Provides the main `CoreError` enum that wraps all error types from different
4//! modules in the crate. Designed for easy error propagation and conversion.
5//!
6//! # Error Philosophy
7//!
8//! - Use `thiserror` for structured error handling (no `anyhow` bloat)
9//! - Provide detailed context for debugging and user feedback
10//! - Support error chains with source information
11//! - Include suggestions for common error scenarios
12//! - Maintain zero-cost error handling where possible
13//!
14//! # Examples
15//!
16//! ```rust
17//! use ass_core::utils::errors::{CoreError, Result, ErrorCategory};
18//!
19//! // Create specific error types
20//! let color_err = CoreError::invalid_color("invalid");
21//! let time_err = CoreError::invalid_time("1:23", "missing seconds");
22//!
23//! // Check error properties
24//! assert_eq!(color_err.category(), ErrorCategory::Format);
25//! assert!(color_err.suggestion().is_some());
26//! ```
27
28mod category;
29mod constructors;
30mod conversions;
31mod core;
32pub mod encoding;
33mod format;
34pub mod resource;
35
36// Re-export all public types to maintain API compatibility
37pub use category::ErrorCategory;
38pub use core::{CoreError, Result};
39
40// Re-export utility functions from sub-modules
41pub use encoding::{
42    utf8_error, validate_ass_text_content, validate_bom_handling, validate_utf8_detailed,
43};
44pub use format::{invalid_color, invalid_numeric, invalid_time, validate_color_format};
45pub use resource::{
46    check_memory_limit, feature_not_supported, out_of_memory, resource_limit_exceeded,
47};
48
49#[cfg(test)]
50mod tests;
51
52#[cfg(test)]
53mod inline_tests;
54
55#[cfg(test)]
56mod conversion_tests;