1#![deny(missing_debug_implementations, missing_copy_implementations)]
2#![warn(missing_docs, rustdoc::missing_crate_level_docs)]
3#![doc = include_str!("../readme.md")]
4#![doc(html_logo_url = "https://raw.githubusercontent.com/oovm/shape-rs/dev/projects/images/Trapezohedron.svg")]
5#![doc(html_favicon_url = "https://raw.githubusercontent.com/oovm/shape-rs/dev/projects/images/Trapezohedron.svg")]
6
7mod convert;
8
9mod display;
10
11pub mod party_3rd {
13 #[cfg(feature = "chrono")]
14 pub use chrono;
15 #[cfg(feature = "hmac")]
16 pub use hmac::{Hmac, Mac};
17 #[cfg(feature = "lettre")]
18 pub use lettre;
19 #[cfg(feature = "reqwest")]
20 pub use reqwest;
21}
22
23pub type Result<T> = std::result::Result<T, AliError>;
25
26#[derive(Clone)]
28pub struct AliError {
29 kind: Box<AliErrorKind>,
30}
31
32#[derive(Debug, Clone)]
34pub enum AliErrorKind {
35 ServiceError {
37 message: String,
39 },
40 NetworkError {
42 message: String,
44 },
45 EncoderError {
47 format: String,
49 message: String,
51 },
52 DecoderError {
54 format: String,
56 message: String,
58 },
59 CustomError {
61 message: String,
63 },
64 UnknownError,
66}
67
68impl AliError {
69 pub fn network_error(message: impl Into<String>) -> Self {
71 AliErrorKind::NetworkError { message: message.into() }.into()
72 }
73 pub fn custom_error(message: impl Into<String>) -> Self {
75 AliError { kind: Box::new(AliErrorKind::CustomError { message: message.into() }) }
76 }
77}