summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/lib.rs b/src/lib.rs
index fbe8e37..1036c6d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -14,7 +14,6 @@ use adblock::blocker::BlockerError as RustBlockerError;
14use adblock::blocker::BlockerResult as RustBlockerResult; 14use adblock::blocker::BlockerResult as RustBlockerResult;
15use adblock::cosmetic_filter_cache::HostnameSpecificResources as RustHostnameSpecificResources; 15use adblock::cosmetic_filter_cache::HostnameSpecificResources as RustHostnameSpecificResources;
16use adblock::engine::Engine as RustEngine; 16use adblock::engine::Engine as RustEngine;
17use failure::Fail;
18use pyo3::class::PyObjectProtocol; 17use pyo3::class::PyObjectProtocol;
19use pyo3::exceptions::ValueError as PyValueError; 18use pyo3::exceptions::ValueError as PyValueError;
20use pyo3::prelude::*; 19use pyo3::prelude::*;
@@ -22,6 +21,8 @@ use pyo3::PyErr;
22 21
23use std::collections::HashMap; 22use std::collections::HashMap;
24use std::collections::HashSet; 23use std::collections::HashSet;
24use std::error::Error;
25use std::fmt::{self, Display};
25use std::fs; 26use std::fs;
26use std::io::{Read, Write}; 27use std::io::{Read, Write};
27use std::iter::FromIterator; 28use std::iter::FromIterator;
@@ -111,20 +112,37 @@ impl PyObjectProtocol for BlockerResult {
111 } 112 }
112} 113}
113 114
114#[derive(Fail, Debug, PartialEq, Copy, Clone)] 115#[derive(Debug, PartialEq, Eq, Copy, Clone)]
115pub enum BlockerError { 116pub enum BlockerError {
116 #[fail(display = "Serialization error")]
117 SerializationError, 117 SerializationError,
118 #[fail(display = "Deserialization error")]
119 DeserializationError, 118 DeserializationError,
120 #[fail(display = "Optimized filter exists")]
121 OptimizedFilterExistence, 119 OptimizedFilterExistence,
122 #[fail(display = "Bad filter add unsupported")]
123 BadFilterAddUnsupported, 120 BadFilterAddUnsupported,
124 #[fail(display = "Filter exists")]
125 FilterExists, 121 FilterExists,
126} 122}
127 123
124impl Error for BlockerError {
125 fn source(&self) -> Option<&(dyn Error + 'static)> {
126 None
127 }
128}
129
130impl Display for BlockerError {
131 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
132 write!(
133 f,
134 "{}",
135 match self {
136 Self::SerializationError => "Serialization error",
137 Self::DeserializationError => "Deserialization error",
138 Self::OptimizedFilterExistence => "Optimized filter exists",
139 Self::BadFilterAddUnsupported => "Bad filter add unsupported",
140 Self::FilterExists => "Filter exists",
141 }
142 )
143 }
144}
145
128impl Into<PyErr> for BlockerError { 146impl Into<PyErr> for BlockerError {
129 fn into(self) -> PyErr { 147 fn into(self) -> PyErr {
130 PyErr::new::<PyValueError, _>(format!("{:?}", self)) 148 PyErr::new::<PyValueError, _>(format!("{:?}", self))