massa_models/
error.rs

1// Copyright (c) 2022 MASSA LABS <info@massa.net>
2
3use displaydoc::Display;
4use massa_serialization::SerializeError;
5use thiserror::Error;
6/// models error
7pub type ModelsResult<T, E = ModelsError> = core::result::Result<T, E>;
8
9/// models error
10#[non_exhaustive]
11#[derive(Display, Error, Debug, Clone)]
12pub enum ModelsError {
13    /// hashing error
14    HashError,
15    /// Serialization error: {0}
16    SerializeError(String),
17    /// Serialization error: {0}
18    SerializationError(#[from] SerializeError),
19    /// Deserialization error: {0}
20    DeserializeError(String),
21    /// buffer error: {0}
22    BufferError(String),
23    /// `MassaHash` error: {0}
24    MassaHashError(#[from] massa_hash::MassaHashError),
25    /// `massa_signature` error: {0}
26    MassaSignatureError(#[from] massa_signature::MassaSignatureError),
27    /// thread overflow error
28    ThreadOverflowError,
29    /// period overflow error
30    PeriodOverflowError,
31    /// amount parse error: {0}
32    AmountParseError(String),
33    /// address parsing error: {0}
34    AddressParseError(String),
35    /// node id parsing error
36    NodeIdParseError,
37    /// block id parsing error
38    BlockIdParseError,
39    /// operation id parsing error
40    OperationIdParseError,
41    /// endorsement id parsing error
42    EndorsementIdParseError,
43    /// checked operation error
44    CheckedOperationError(String),
45    /// invalid version identifier: {0}
46    InvalidVersionError(String),
47    /// invalid ledger change: {0}
48    InvalidLedgerChange(String),
49    /// Time overflow error
50    TimeOverflowError,
51    /// Time error {0}
52    TimeError(#[from] massa_time::TimeError),
53    /// invalid roll update: {0}
54    InvalidRollUpdate(String),
55    /// Ledger changes, Amount overflow
56    AmountOverflowError,
57    /// Wrong prefix for hash: expected {0}, got {1}
58    WrongPrefix(String, String),
59    /// Wrong operation id size deduced on join
60    OperationPrefixJoinError,
61    /// Outdated bootstrap cursor
62    OutdatedBootstrapCursor,
63    /// Error raised {0}
64    ErrorRaised(String),
65    /// deferred call id parsing error
66    DeferredCallIdParseError,
67}
68
69impl From<nom::Err<nom::error::Error<&[u8]>>> for ModelsError {
70    fn from(err: nom::Err<nom::error::Error<&[u8]>>) -> Self {
71        ModelsError::DeserializeError(err.to_string())
72    }
73}
74
75impl From<&'static str> for ModelsError {
76    fn from(err: &'static str) -> Self {
77        ModelsError::ErrorRaised(err.to_string())
78    }
79}