wikibase 0.7.6

A library to access Wikibase
Documentation
#![deny(
//    missing_docs,
    missing_debug_implementations,
    missing_copy_implementations,
    trivial_casts,
    trivial_numeric_casts,
    unsafe_code,
    unstable_features,
    unused_import_braces,
    unused_qualifications
)]

use std::{error::Error, fmt};

use mediawiki::MediaWikiError;

#[derive(Debug, Clone)]
pub enum WikibaseError {
    Configuration(String),
    Request(String),
    Serialization(String),
    Validation(String),
    MediaWiki(String),
    Diff(String),
    PoisonedMutex,
    ChunkSizeZero,
}

impl Error for WikibaseError {}

impl From<MediaWikiError> for WikibaseError {
    fn from(e: MediaWikiError) -> Self {
        Self::MediaWiki(format!("{e}"))
    }
}

impl From<serde_json::Error> for WikibaseError {
    fn from(e: serde_json::Error) -> Self {
        Self::Serialization(format!("{e}"))
    }
}

impl fmt::Display for WikibaseError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{:?}", self)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn wikibase_error() {
        let err = WikibaseError::Request("Oh no!".to_string());
        assert_eq!(format!("{}", &err), "Request(\"Oh no!\")");
    }
}