snarkvm_errors/curves/
group.rs

1// Copyright (C) 2019-2021 Aleo Systems Inc.
2// This file is part of the snarkVM library.
3
4// The snarkVM library is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8
9// The snarkVM library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License
15// along with the snarkVM library. If not, see <https://www.gnu.org/licenses/>.
16
17use crate::curves::FieldError;
18
19#[derive(Debug, Error)]
20pub enum GroupError {
21    #[error("{}: {}", _0, _1)]
22    Crate(&'static str, String),
23
24    #[error("{}", _0)]
25    FieldError(FieldError),
26
27    #[error("Invalid group element")]
28    InvalidGroupElement,
29
30    #[error("Attempting to parse an invalid string into a group element")]
31    InvalidString,
32
33    #[error("{}", _0)]
34    Message(String),
35
36    #[error("Attempting to parse an empty string into a group element")]
37    ParsingEmptyString,
38
39    #[error("Attempting to parse a non-digit character into a group element")]
40    ParsingNonDigitCharacter,
41}
42
43impl From<FieldError> for GroupError {
44    fn from(error: FieldError) -> Self {
45        GroupError::FieldError(error)
46    }
47}
48
49impl From<std::io::Error> for GroupError {
50    fn from(error: std::io::Error) -> Self {
51        GroupError::Crate("std::io", format!("{:?}", error))
52    }
53}
54
55impl From<GroupError> for std::io::Error {
56    fn from(error: GroupError) -> Self {
57        std::io::Error::new(std::io::ErrorKind::Other, format!("{}", error))
58    }
59}