error.rs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. use thiserror::Error as ThisError;
  2. pub type Result<T, E = Error> = std::result::Result<T, E>;
  3. #[derive(ThisError, Debug)]
  4. pub enum Error {
  5. /// Used when errors need to propogate but are too unique to be typed
  6. #[error("{0}")]
  7. Unique(String),
  8. #[error("I/O Error: {0}")]
  9. IO(#[from] std::io::Error),
  10. #[error("Format Error: {0}")]
  11. FormatError(#[from] std::fmt::Error),
  12. #[error("Format failed: {0}")]
  13. ParseError(String),
  14. #[error("Runtime Error: {0}")]
  15. RuntimeError(String),
  16. #[error("Failed to write error")]
  17. FailedToWrite,
  18. #[error("Build Failed: {0}")]
  19. BuildFailed(String),
  20. #[error("Cargo Error: {0}")]
  21. CargoError(String),
  22. #[error("{0}")]
  23. CustomError(String),
  24. #[error("Invalid proxy URL: {0}")]
  25. InvalidProxy(#[from] hyper::http::uri::InvalidUri),
  26. #[error("Failed to establish proxy: {0}")]
  27. ProxySetupError(String),
  28. #[error("Error proxying request: {0}")]
  29. ProxyRequestError(hyper::Error),
  30. #[error(transparent)]
  31. Other(#[from] anyhow::Error),
  32. }
  33. impl From<&str> for Error {
  34. fn from(s: &str) -> Self {
  35. Error::Unique(s.to_string())
  36. }
  37. }
  38. impl From<String> for Error {
  39. fn from(s: String) -> Self {
  40. Error::Unique(s)
  41. }
  42. }
  43. impl From<html_parser::Error> for Error {
  44. fn from(e: html_parser::Error) -> Self {
  45. Self::ParseError(e.to_string())
  46. }
  47. }
  48. impl From<hyper::Error> for Error {
  49. fn from(e: hyper::Error) -> Self {
  50. Self::RuntimeError(e.to_string())
  51. }
  52. }
  53. impl From<dioxus_cli_config::LoadDioxusConfigError> for Error {
  54. fn from(e: dioxus_cli_config::LoadDioxusConfigError) -> Self {
  55. Self::RuntimeError(e.to_string())
  56. }
  57. }
  58. impl From<dioxus_cli_config::CargoError> for Error {
  59. fn from(e: dioxus_cli_config::CargoError) -> Self {
  60. Self::CargoError(e.to_string())
  61. }
  62. }
  63. #[macro_export]
  64. macro_rules! custom_error {
  65. ($msg:literal $(,)?) => {
  66. Err(Error::CustomError(format!($msg)))
  67. };
  68. ($err:expr $(,)?) => {
  69. Err(Error::from($err))
  70. };
  71. ($fmt:expr, $($arg:tt)*) => {
  72. Err(Error::CustomError(format!($fmt, $($arg)*)))
  73. };
  74. }