syt/
lib.rs

1#![allow(rustdoc::bare_urls)]
2#![doc = include_str!("../README.md")]
3use std::{error::Error as StdError, fmt};
4
5pub mod append;
6pub mod comments;
7pub mod lazy;
8
9/// Error enum for errors thrown by functions in this crate.
10#[derive(Debug)]
11pub enum Error {
12    IoError(std::io::Error),
13    YamlError(serde_yml::Error),
14    FromUtf8Error(std::string::FromUtf8Error),
15}
16
17impl fmt::Display for Error {
18    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19        match self {
20            Error::IoError(err) => write!(f, "IO Error: {}", err),
21            Error::YamlError(err) => write!(f, "YAML Error: {}", err),
22            Error::FromUtf8Error(err) => write!(f, "FromUtf8 Error: {}", err),
23        }
24    }
25}
26
27impl StdError for Error {
28    fn source(&self) -> Option<&(dyn StdError + 'static)> {
29        match self {
30            Error::IoError(err) => Some(err),
31            Error::YamlError(err) => Some(err),
32            Error::FromUtf8Error(err) => Some(err),
33        }
34    }
35}
36
37impl From<std::io::Error> for Error {
38    fn from(err: std::io::Error) -> Self {
39        Error::IoError(err)
40    }
41}
42
43impl From<serde_yml::Error> for Error {
44    fn from(err: serde_yml::Error) -> Self {
45        Error::YamlError(err)
46    }
47}
48
49impl From<std::string::FromUtf8Error> for Error {
50    fn from(err: std::string::FromUtf8Error) -> Self {
51        Error::FromUtf8Error(err)
52    }
53}
54
55/// This crate's result type for [Error].
56pub type Result<T> = std::result::Result<T, Error>;