diff options
author | Federico Mena Quintero <federico@gnome.org> | 2023-01-30 16:47:08 -0600 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2023-01-30 16:47:08 -0600 |
commit | 5da5708d55271a26b7f045d8fa5864acebad7042 (patch) | |
tree | 8f9be8c574784bd3e46f08ade625557490735b60 | |
parent | f00e76e493766f47e2f44e0dc688fd0b760f8982 (diff) | |
download | librsvg-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.lock | 1 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/bin/rsvg-bench.rs | 19 |
3 files changed, 13 insertions, 9 deletions
@@ -1125,6 +1125,7 @@ dependencies = [ "string_cache", "system-deps", "tempfile", + "thiserror", "tinyvec", "url", "xml5ever", @@ -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); |