diff options
| author | Teddy Wing | 2022-05-28 13:39:05 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2022-06-25 02:19:12 +0200 | 
| commit | e4f241854bd4941fe71e433a39161ed28c22e97d (patch) | |
| tree | 1126890509047a45fc066cf1add86fc390b2785a | |
| parent | f3ba74748fa189179609f43949506455bcc06f75 (diff) | |
| download | pdf_form-e4f241854bd4941fe71e433a39161ed28c22e97d.tar.bz2 | |
Switch from 'derive-error' to 'thiserror'include-lopdf-error-in-message
With 'thiserror', we can include the source error text in the error
message, making it easier to identify the cause of the error.
I mostly duplicated the doc comments in the error messages to mimic the
behaviour of 'derive-error'.
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/lib.rs | 16 | 
2 files changed, 11 insertions, 7 deletions
| @@ -10,5 +10,5 @@ edition = "2018"  [dependencies]  bitflags = "^1.2" -derive-error = "^0.0.4"  lopdf = "^0.25" +thiserror = "1.0.31" @@ -1,7 +1,5 @@  #[macro_use]  extern crate bitflags; -#[macro_use] -extern crate derive_error;  mod utils; @@ -40,28 +38,34 @@ pub enum FieldType {      Unknown,  } -#[derive(Debug, Error)] +#[derive(Debug, thiserror::Error)]  /// Errors that may occur while loading a PDF  pub enum LoadError {      /// An Lopdf Error -    LopdfError(lopdf::Error), +    #[error("Lopdf error")] +    LopdfError(#[from] lopdf::Error),      /// The reference `ObjectId` did not point to any values -    #[error(non_std, no_from)] +    #[error("The reference `{0:?}` did not point to any values")]      NoSuchReference(ObjectId),      /// An element that was expected to be a reference was not a reference +    #[error("An element that was expected to be a reference was not a reference")]      NotAReference,  }  /// Errors That may occur while setting values in a form -#[derive(Debug, Error)] +#[derive(Debug, thiserror::Error)]  pub enum ValueError {      /// The method used to set the state is incompatible with the type of the field +    #[error("The method used to set the state is incompatible with the type of the field")]      TypeMismatch,      /// One or more selected values are not valid choices +    #[error("One or more selected values are not valid choices")]      InvalidSelection,      /// Multiple values were selected when only one was allowed +    #[error("Multiple values were selected when only one was allowed")]      TooManySelected,      /// Readonly field cannot be edited +    #[error("Readonly field cannot be edited")]      Readonly,  }  /// The current state of a form field | 
