rusty_dex/
error.rs

1//! Collection of error types for DEX files parsing
2//!
3//! Note: this mostly unused as of now but might be useful in the future.
4
5use std::error::Error;
6use std::fmt;
7
8/// A generic error type
9#[derive(Debug)]
10pub struct DexError {
11    /// Error message
12    pub message: String,
13}
14
15impl DexError {
16    /// Create a new error with the given message
17    pub fn new(msg: &str) -> DexError {
18        DexError { message: msg.to_string() }
19    }
20}
21
22/// Implement `Display` trait for `DexError`
23impl fmt::Display for DexError {
24    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
25        write!(f,"{}", self.message)
26    }
27}
28
29/// Implement `Error` trait for `DexError`
30impl Error for DexError {
31    fn description(&self) -> &str {
32        &self.message
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use super::*;
39
40    #[test]
41    fn test_new() {
42        let error = DexError::new("test message");
43        assert_eq!(error.message, "test message");
44    }
45
46    #[test]
47    fn test_display() {
48        let error = DexError::new("test message");
49        assert_eq!(error.to_string(), "test message");
50    }
51
52    #[test]
53    fn test_description() {
54        let error = DexError::new("test message");
55        assert_eq!(error.description(), "test message");
56    }
57}