1mod case;
2mod context;
3mod domain;
4mod error;
5mod metadata;
6mod reason;
7mod report;
8mod universal;
9use std::fmt::Display;
10
11pub use context::ContextAdd;
12pub use context::{ContextRecord, OperationContext, OperationScope, WithContext};
13pub use domain::DomainReason;
14pub use error::{convert_error, SourceFrame, StructError, StructErrorBuilder, StructErrorTrait};
15pub use metadata::{ErrorMetadata, MetadataValue};
16pub use reason::ErrorCode;
17pub use report::{ErrorReport, RedactPolicy, RenderMode};
18pub use universal::{ConfErrReason, UvsFrom, UvsReason};
19
20pub enum ErrStrategy {
21 Retry,
23 Ignore,
25 Throw,
27}
28
29pub fn print_error<R: DomainReason + ErrorCode + Display>(err: &StructError<R>) {
30 println!("[error code{}] \n{err}", err.reason().error_code());
31 for ctx in err.context().iter() {
32 println!("context: {ctx}", ctx = ctx.context());
33 }
34 println!("{}", "-".repeat(50));
35}
36
37pub fn print_error_zh<R: DomainReason + ErrorCode + Display>(err: &StructError<R>) {
38 println!("[错误代码 {}] \n{err}", err.reason().error_code());
39 for ctx in err.context().iter() {
40 println!("上下文: {ctx}", ctx = ctx.context());
41 }
42 println!("{}", "-".repeat(50));
43}