summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@gnome.org>2023-01-30 16:47:08 -0600
committerFederico Mena Quintero <federico@gnome.org>2023-01-30 16:47:08 -0600
commit5da5708d55271a26b7f045d8fa5864acebad7042 (patch)
tree8f9be8c574784bd3e46f08ade625557490735b60
parentf00e76e493766f47e2f44e0dc688fd0b760f8982 (diff)
downloadlibrsvg-5da5708d55271a26b7f045d8fa5864acebad7042.tar.gz
rsvg-bench.rs: Port from the failure crate to anyhow/thiserror
Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/789>
-rw-r--r--Cargo.lock1
-rw-r--r--Cargo.toml2
-rw-r--r--src/bin/rsvg-bench.rs19
3 files changed, 13 insertions, 9 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 22dc34cf..d15b94e8 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1125,6 +1125,7 @@ dependencies = [
"string_cache",
"system-deps",
"tempfile",
+ "thiserror",
"tinyvec",
"url",
"xml5ever",
diff --git a/Cargo.toml b/Cargo.toml
index 811b25c6..20babd44 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -51,6 +51,7 @@ crate-type = [ "staticlib", "rlib" ]
[dependencies]
# Keep these in sync with respect to the cairo-rs version:
# src/lib.rs - toplevel example in the docs
+anyhow = "1.0"
byteorder = "1.4"
cairo-rs = { version = "0.16", features=["v1_16", "png", "pdf", "ps", "svg"] }
cast = "0.3.0"
@@ -80,6 +81,7 @@ regex = "1"
rgb = { version="0.8", features=["argb"] }
selectors = "0.23.0"
string_cache = "0.8.0"
+thiserror = "1.0"
tinyvec = { version = "1.2.0", features = ["alloc"] }
url = "2"
xml5ever = "0.17.0"
diff --git a/src/bin/rsvg-bench.rs b/src/bin/rsvg-bench.rs
index 080887a8..b9cf5833 100644
--- a/src/bin/rsvg-bench.rs
+++ b/src/bin/rsvg-bench.rs
@@ -5,7 +5,7 @@
use cairo;
use librsvg;
-use failure::{self, Error, Fail};
+use anyhow::Result;
use std::fs;
use std::io;
use std::path::{Path, PathBuf};
@@ -13,6 +13,7 @@ use std::process;
use std::thread;
use std::time::Duration;
use structopt::{self, StructOpt};
+use thiserror::Error;
#[cfg_attr(rustfmt, rustfmt_skip)]
#[derive(StructOpt, Debug)]
@@ -44,18 +45,18 @@ struct Opt {
hard_failures: bool,
}
-#[derive(Debug)]
+#[derive(Debug, Error)]
enum LoadingError {
Skipped,
Rsvg(librsvg::LoadingError),
}
-#[derive(Debug, Fail)]
+#[derive(Debug, Error)]
enum ProcessingError {
- #[fail(display = "Cairo error: {:?}", status)]
+ #[error("Cairo error: {error:?}")]
CairoError { error: cairo::Error },
- #[fail(display = "Rendering error")]
+ #[error("Rendering error")]
RenderingError,
}
@@ -71,7 +72,7 @@ impl From<librsvg::RenderingError> for ProcessingError {
}
}
-fn process_path<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<(), Error> {
+fn process_path<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<()> {
let meta = fs::metadata(&path)?;
if meta.is_dir() {
@@ -85,7 +86,7 @@ fn process_path<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<(), Error> {
Ok(())
}
-fn process_directory<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<(), Error> {
+fn process_directory<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<()> {
println!("Processing {:?}", path.as_ref());
for entry in fs::read_dir(path)? {
@@ -107,7 +108,7 @@ fn read_svg(opt: &Opt, path: &Path) -> Result<librsvg::SvgHandle, LoadingError>
}
}
-fn process_file<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<(), Error> {
+fn process_file<P: AsRef<Path>>(opt: &Opt, path: P) -> Result<()> {
println!("Processing {:?}", path.as_ref());
assert!(opt.num_parse > 0);
@@ -167,7 +168,7 @@ fn print_options(opt: &Opt) {
opt.sleep_secs);
}
-fn run(opt: &Opt) -> Result<(), Error> {
+fn run(opt: &Opt) -> Result<()> {
print_options(opt);
sleep(opt.sleep_secs);