pub enum AnvilKitError {
Render {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Physics {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Asset {
message: String,
path: Option<String>,
source: Option<Box<dyn Error + Send + Sync>>,
},
Audio {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Input {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Ecs {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Window {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Config {
message: String,
key: Option<String>,
source: Option<Box<dyn Error + Send + Sync>>,
},
Network {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Io(Error),
Serialization {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
Generic {
message: String,
source: Option<Box<dyn Error + Send + Sync>>,
},
}Expand description
AnvilKit 的主要错误类型
这个枚举涵盖了 AnvilKit 生态系统中可能出现的所有错误类型。 每个变体都包含详细的错误信息和可选的上下文数据。
§设计特点
- 结构化: 按功能模块分类错误
- 信息丰富: 包含详细的错误描述和上下文
- 可序列化: 支持错误的序列化和传输
- 链式错误: 支持错误链和根因分析
Variants§
Render
渲染系统错误
包括 GPU 驱动错误、着色器编译错误、纹理加载错误等。
Physics
物理系统错误
包括物理世界初始化错误、碰撞检测错误、约束求解错误等。
Asset
资源管理错误
包括资源加载失败、格式不支持、资源不存在等。
Fields
Audio
音频系统错误
包括音频设备初始化错误、音频格式错误、播放错误等。
Input
输入系统错误
包括输入设备初始化错误、输入映射错误等。
Ecs
ECS 系统错误
包括组件注册错误、系统调度错误、世界状态错误等。
Window
窗口和平台错误
包括窗口创建错误、平台特定错误、事件处理错误等。
Config
配置和初始化错误
包括配置文件解析错误、参数验证错误、初始化失败等。
Fields
Network
网络和通信错误
包括网络连接错误、协议错误、序列化错误等。
Io(Error)
I/O 操作错误
文件系统操作、网络 I/O 等底层 I/O 错误的包装。
Serialization
序列化和反序列化错误
Generic
通用错误
用于不属于其他特定类别的错误。
Implementations§
Source§impl AnvilKitError
impl AnvilKitError
Sourcepub fn render(message: impl Into<String>) -> AnvilKitError
pub fn render(message: impl Into<String>) -> AnvilKitError
Sourcepub fn render_with_source(
message: impl Into<String>,
source: impl Error + Send + Sync + 'static,
) -> AnvilKitError
pub fn render_with_source( message: impl Into<String>, source: impl Error + Send + Sync + 'static, ) -> AnvilKitError
创建带源错误的渲染错误
Sourcepub fn physics(message: impl Into<String>) -> AnvilKitError
pub fn physics(message: impl Into<String>) -> AnvilKitError
创建物理错误
Sourcepub fn physics_with_source(
message: impl Into<String>,
source: impl Error + Send + Sync + 'static,
) -> AnvilKitError
pub fn physics_with_source( message: impl Into<String>, source: impl Error + Send + Sync + 'static, ) -> AnvilKitError
创建带源错误的物理错误
Sourcepub fn asset(message: impl Into<String>) -> AnvilKitError
pub fn asset(message: impl Into<String>) -> AnvilKitError
创建资源错误
Sourcepub fn asset_with_path(
message: impl Into<String>,
path: impl Into<String>,
) -> AnvilKitError
pub fn asset_with_path( message: impl Into<String>, path: impl Into<String>, ) -> AnvilKitError
创建带路径的资源错误
Sourcepub fn audio(message: impl Into<String>) -> AnvilKitError
pub fn audio(message: impl Into<String>) -> AnvilKitError
创建音频错误
Sourcepub fn input(message: impl Into<String>) -> AnvilKitError
pub fn input(message: impl Into<String>) -> AnvilKitError
创建输入错误
Sourcepub fn ecs(message: impl Into<String>) -> AnvilKitError
pub fn ecs(message: impl Into<String>) -> AnvilKitError
创建 ECS 错误
Sourcepub fn window(message: impl Into<String>) -> AnvilKitError
pub fn window(message: impl Into<String>) -> AnvilKitError
创建窗口错误
Sourcepub fn config(message: impl Into<String>) -> AnvilKitError
pub fn config(message: impl Into<String>) -> AnvilKitError
创建配置错误
Sourcepub fn config_with_key(
message: impl Into<String>,
key: impl Into<String>,
) -> AnvilKitError
pub fn config_with_key( message: impl Into<String>, key: impl Into<String>, ) -> AnvilKitError
创建带键的配置错误
Sourcepub fn network(message: impl Into<String>) -> AnvilKitError
pub fn network(message: impl Into<String>) -> AnvilKitError
创建网络错误
Sourcepub fn serialization(message: impl Into<String>) -> AnvilKitError
pub fn serialization(message: impl Into<String>) -> AnvilKitError
创建序列化错误
Sourcepub fn generic(message: impl Into<String>) -> AnvilKitError
pub fn generic(message: impl Into<String>) -> AnvilKitError
创建通用错误
Sourcepub fn category(&self) -> ErrorCategory
pub fn category(&self) -> ErrorCategory
获取错误类别
§示例
use anvilkit_core::error::{AnvilKitError, ErrorCategory};
let error = AnvilKitError::render("测试错误");
assert_eq!(error.category(), ErrorCategory::Render);Sourcepub fn is_category(&self, category: ErrorCategory) -> bool
pub fn is_category(&self, category: ErrorCategory) -> bool
检查是否为特定类别的错误
§示例
use anvilkit_core::error::{AnvilKitError, ErrorCategory};
let error = AnvilKitError::render("测试错误");
assert!(error.is_category(ErrorCategory::Render));
assert!(!error.is_category(ErrorCategory::Physics));Sourcepub fn with_context(self, context: impl Into<String>) -> AnvilKitError
pub fn with_context(self, context: impl Into<String>) -> AnvilKitError
添加上下文信息
返回一个包含额外上下文信息的新错误。
Trait Implementations§
Source§impl Debug for AnvilKitError
impl Debug for AnvilKitError
Source§impl Display for AnvilKitError
impl Display for AnvilKitError
Source§impl Error for AnvilKitError
impl Error for AnvilKitError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl From<Error> for AnvilKitError
impl From<Error> for AnvilKitError
Source§fn from(source: Error) -> AnvilKitError
fn from(source: Error) -> AnvilKitError
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for AnvilKitError
impl !RefUnwindSafe for AnvilKitError
impl Send for AnvilKitError
impl Sync for AnvilKitError
impl Unpin for AnvilKitError
impl UnsafeUnpin for AnvilKitError
impl !UnwindSafe for AnvilKitError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.