vsqx/
lib.rs

1pub mod vpr;
2pub mod vsqx3;
3pub mod vsqx4;
4
5pub(crate) mod write_xml;
6
7// ダウングレード用プログラム
8pub(crate) mod v5to4;
9
10// アップグレード用プログラム
11pub(crate) mod v4to5;
12
13use failure::Fail;
14#[derive(Fail, Debug)]
15pub enum Error {
16    #[fail(display = "failed to serialize/deserialize JSON: {}", _0)]
17    SerdeJsonError(serde_json::Error),
18    #[fail(display = "IO Error: {}", _0)]
19    IoError(std::io::Error),
20    #[fail(display = "Zip Error: {}", _0)]
21    ZipError(zip::result::ZipError),
22    #[fail(display = "XML error: {}", _0)]
23    XmlError(quick_xml::Error),
24    #[fail(display = "XML deserialize error: {}", _0)]
25    XmlDeError(quick_xml::DeError),
26}
27
28impl From<serde_json::Error> for Error {
29    fn from(e: serde_json::Error) -> Self {
30        Self::SerdeJsonError(e)
31    }
32}
33
34impl From<std::io::Error> for Error {
35    fn from(e: std::io::Error) -> Self {
36        Self::IoError(e)
37    }
38}
39
40impl From<zip::result::ZipError> for Error {
41    fn from(e: zip::result::ZipError) -> Self {
42        Self::ZipError(e)
43    }
44}
45
46impl From<quick_xml::Error> for Error {
47    fn from(e: quick_xml::Error) -> Self {
48        Self::XmlError(e)
49    }
50}
51
52impl From<quick_xml::DeError> for Error {
53    fn from(e: quick_xml::DeError) -> Self {
54        Self::XmlDeError(e)
55    }
56}
57
58pub type Result<T> = std::result::Result<T, Error>;