[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH 04/25] tools/xenbindgen: Add a TOML spec reader
On Mon Nov 25, 2024 at 3:13 PM GMT, Teddy Astie wrote: > Hi, > > > + let _specification = match spec::Spec::new(&cli.indir) { > > + Ok(x) => x, > > + Err(spec::Error::Toml(x)) => { > > + error!("TOML parsing error:"); > > + error!("{x:#?}"); > > + std::process::exit(1); > > + } > > + Err(spec::Error::Io(x)) => { > > + error!("IO error:"); > > + error!("{x:#?}"); > > + std::process::exit(1); > > + } > > + }; > > I think it can be replaced with .unwrap() (or making the main function > returns a Result<T, E>) as long as our internal error implements Display. Oh, I wasn't aware E: Display was honoured on exit. I thought it always used E: Debug. That ought to be a lot nicer. > > > +/// Internal error type for every error spec parsing could encounter > > +#[derive(Debug)] > > +pub enum Error { > > + /// Wrapper around IO errors > > + Io(std::io::Error), > > + /// Wrapper around deserialization errors > > + Toml(toml::de::Error), > > +} > > + > > +/// Maps an [`std::io::Error`] onto a [`Error`] type for easier propagation > > +fn from_ioerr<T>(t: std::io::Result<T>) -> Result<T, Error> { > > + t.map_err(Error::Io) > > +} > > + > > May be worth a > impl From<std::io::Error> for super::Error > such as ? operator can automatically convert it to our internal error type > > Cheers > Teddy > > > Teddy Astie | Vates XCP-ng Developer > > XCP-ng & Xen Orchestra - Vates solutions > > web: https://vates.tech Yes, I replaced all this faff in my internal branch with From<std::io::Error> and From<toml::de::Error> shortly after sending the RFC. It is indeed a lot tidier. Cheers, Alejandro
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |