aboutsummaryrefslogtreecommitdiffstats
path: root/src/errors.rs
diff options
context:
space:
mode:
authorTeddy Wing2019-11-02 01:53:52 +0100
committerTeddy Wing2019-11-02 01:53:52 +0100
commit950c7d1a93ae44da2584345e4a2624d64ef84816 (patch)
tree4b1fdcdd98a7fc49a8bd93bfb7b27397c306de9f /src/errors.rs
parent65305566946555ec78596e57e48c551a3dbf9dc8 (diff)
downloadpdf-urls-950c7d1a93ae44da2584345e4a2624d64ef84816.tar.bz2
get_urls_from_pdf: Return a `Vec<String>` instead of printing
Facilitate testing by returning a vec of URLs instead of printing them directly to STDOUT.
Diffstat (limited to 'src/errors.rs')
-rw-r--r--src/errors.rs52
1 files changed, 48 insertions, 4 deletions
diff --git a/src/errors.rs b/src/errors.rs
index 6ec2ee1..641c81b 100644
--- a/src/errors.rs
+++ b/src/errors.rs
@@ -1,6 +1,7 @@
use std::fmt;
use std::error;
use std::str;
+use std::string;
use lopdf;
@@ -9,14 +10,14 @@ pub type Result<T> = ::std::result::Result<T, Error>;
#[derive(Debug)]
pub enum Error {
Lopdf(lopdf::Error),
- Utf8(str::Utf8Error),
+ String(StringError),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
Error::Lopdf(ref err) => write!(f, "pdf error: {}", err),
- Error::Utf8(ref err) => write!(f, "utf8 error: {}", err),
+ Error::String(ref err) => write!(f, "{}", err),
}
}
}
@@ -25,7 +26,7 @@ impl error::Error for Error {
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
match *self {
Error::Lopdf(ref err) => Some(err),
- Error::Utf8(ref err) => Some(err),
+ Error::String(ref err) => Some(err),
}
}
}
@@ -38,6 +39,49 @@ impl From<lopdf::Error> for Error {
impl From<str::Utf8Error> for Error {
fn from(err: str::Utf8Error) -> Error {
- Error::Utf8(err)
+ Error::String(StringError::from(err))
+ }
+}
+
+impl From<string::FromUtf8Error> for Error {
+ fn from(err: string::FromUtf8Error) -> Error {
+ Error::String(StringError::from(err))
+ }
+}
+
+
+#[derive(Debug)]
+pub enum StringError {
+ StrUtf8(str::Utf8Error),
+ StringUtf8(string::FromUtf8Error),
+}
+
+impl fmt::Display for StringError {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ match *self {
+ StringError::StrUtf8(ref err) => write!(f, "utf8 error: {}", err),
+ StringError::StringUtf8(ref err) => write!(f, "utf8 error: {}", err),
+ }
+ }
+}
+
+impl error::Error for StringError {
+ fn source(&self) -> Option<&(dyn error::Error + 'static)> {
+ match *self {
+ StringError::StrUtf8(ref err) => Some(err),
+ StringError::StringUtf8(ref err) => Some(err),
+ }
+ }
+}
+
+impl From<str::Utf8Error> for StringError {
+ fn from(err: str::Utf8Error) -> StringError {
+ StringError::StrUtf8(err)
+ }
+}
+
+impl From<string::FromUtf8Error> for StringError {
+ fn from(err: string::FromUtf8Error) -> StringError {
+ StringError::StringUtf8(err)
}
}