Skip to main content

nil_crypto/
error.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use serde::Serialize;
5use serde::ser::Serializer;
6
7pub use std::result::Result as StdResult;
8
9pub type Result<T, E = Error> = StdResult<T, E>;
10pub type AnyResult<T> = anyhow::Result<T>;
11
12#[derive(Debug, thiserror::Error)]
13pub enum Error {
14  #[error(transparent)]
15  PasswordHash(#[from] argon2::password_hash::Error),
16  #[error(transparent)]
17  Phc(#[from] argon2::password_hash::phc::Error),
18  #[error(transparent)]
19  Unknown(#[from] anyhow::Error),
20}
21
22impl Serialize for Error {
23  fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
24  where
25    S: Serializer,
26  {
27    serializer.serialize_str(self.to_string().as_str())
28  }
29}