pub enum ReadabilityError {
HtmlParseError(String),
ReadabilityCheckFailed,
ExtractionError(String),
JsEvaluation {
context: String,
source: Error,
},
InvalidOptions(String),
}
Expand description
Errors that can occur during content extraction.
Variants§
HtmlParseError(String)
HTML could not be parsed (malformed, empty, etc.)
This typically occurs when:
- HTML is severely malformed or incomplete
- Empty or whitespace-only input
- Input contains non-HTML content
§Examples
let reader = Readability::new()?;
// This will likely fail with HtmlParseError
let result = reader.parse("<not valid html>");
ReadabilityCheckFailed
Content failed internal readability checks
This usually means:
- Page has too little readable content (< 140 characters by default)
- Content couldn’t be reliably distinguished from navigation/ads
- Page is mostly navigation, ads, or other non-content elements
- Content has too high link density (likely navigation)
§What to do
Try lowering the char_threshold
in ReadabilityOptions
or check
if the HTML actually contains substantial article content:
let options = ReadabilityOptions::new().char_threshold(50);
let reader = Readability::new()?;
let article = reader.parse_with_options(&html, None, Some(options))?;
ExtractionError(String)
Content extraction failed for other reasons
This is a catch-all error for unexpected extraction failures that don’t fit into other categories. Often indicates issues with the JavaScript execution environment or unexpected content structures.
§Examples
let reader = Readability::new()?;
match reader.parse(&html) {
Err(ReadabilityError::ExtractionError(msg)) => {
eprintln!("Extraction failed: {}", msg);
// Maybe try with different options or fallback processing
}
Ok(article) => println!("Success: {}", article.title),
Err(e) => eprintln!("Other error: {}", e),
}
JsEvaluation
JavaScript engine evaluation error
Occurs when the embedded JavaScript engine fails to execute Readability.js code. This could indicate:
- Memory constraints
- JavaScript syntax errors in the bundled code
- Runtime exceptions in the JavaScript environment
§Examples
let reader = Readability::new()?;
match reader.parse(&html) {
Err(ReadabilityError::JsEvaluation { context, source }) => {
eprintln!("JavaScript error in {}: {}", context, source);
// This usually indicates a bug - please report it!
}
Ok(article) => println!("Success: {}", article.title),
Err(e) => eprintln!("Other error: {}", e),
}
InvalidOptions(String)
Invalid input parameters (usually base URL)
This error occurs when:
- Base URL has invalid format or unsupported scheme
- URL uses dangerous schemes like
javascript:
ordata:
- URL is not HTTP(S) when validation is enabled
§Examples
let reader = Readability::new()?;
// This will fail with InvalidOptions
let result = reader.parse_with_url(&html, "javascript:alert('xss')");
assert!(matches!(result, Err(ReadabilityError::InvalidOptions(_))));
Trait Implementations§
Source§impl Debug for ReadabilityError
impl Debug for ReadabilityError
Source§impl Display for ReadabilityError
impl Display for ReadabilityError
Source§impl Error for ReadabilityError
impl Error for ReadabilityError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ReadabilityError
impl !RefUnwindSafe for ReadabilityError
impl Send for ReadabilityError
impl Sync for ReadabilityError
impl Unpin for ReadabilityError
impl !UnwindSafe for ReadabilityError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more