[librsvg] impl std::Error for LoadingError
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] impl std::Error for LoadingError
- Date: Thu, 29 Nov 2018 18:05:55 +0000 (UTC)
commit 4fb74d754d93719ba3acdebbb33d1a8c1eed18ce
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Nov 28 14:27:09 2018 -0600
impl std::Error for LoadingError
rsvg_internals/src/error.rs | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
---
diff --git a/rsvg_internals/src/error.rs b/rsvg_internals/src/error.rs
index a4be968c..3b0734ca 100644
--- a/rsvg_internals/src/error.rs
+++ b/rsvg_internals/src/error.rs
@@ -1,4 +1,4 @@
-use std::error;
+use std::error::{self, Error};
use std::fmt;
use cairo;
@@ -105,7 +105,7 @@ impl From<cairo::Status> for RenderingError {
}
}
-#[derive(Clone)]
+#[derive(Debug, Clone)]
pub enum LoadingError {
// Could not parse data: URL
BadDataUrl,
@@ -115,6 +115,30 @@ pub enum LoadingError {
Unknown,
}
+impl error::Error for LoadingError {
+ fn description(&self) -> &str {
+ match *self {
+ LoadingError::BadDataUrl => "invalid data: URL",
+ LoadingError::Cairo(_) => "cairo error",
+ LoadingError::EmptyData => "empty data",
+ LoadingError::Glib(ref e) => e.description(),
+ LoadingError::Unknown => "unknown error",
+ }
+ }
+}
+
+impl fmt::Display for LoadingError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match *self {
+ LoadingError::Cairo(status) => write!(f, "cairo error: {:?}", status),
+ LoadingError::BadDataUrl
+ | LoadingError::EmptyData
+ | LoadingError::Glib(_)
+ | LoadingError::Unknown => write!(f, "{}", self.description()),
+ }
+ }
+}
+
impl From<cairo::Status> for LoadingError {
fn from(e: cairo::Status) -> LoadingError {
assert!(e != cairo::Status::Success);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]