src/error.rs (64 lines of code) (raw):

// Copyright (c) Facebook, Inc. and its affiliates. // // This source code is licensed under the MIT license found in the // LICENSE file in the root directory of this source tree. //! This module provides definitions of errors might be returned by this library. use crate::index::MAX_HEIGHT; /// Errors occur during deserialization. #[derive(Debug, Clone, PartialEq, Eq)] pub enum DecodingError { /// Decoded tree height or index height exceeds [MAX_HEIGHT] ExceedMaxHeight, /// Provided index does not fit to the tree IndexOverflow, /// There are more bytes than required for deserialization. TooManyEncodedBytes, /// Bytes are not enough for deserialization. BytesNotEnough, /// Error when decoding customized data type. ValueDecodingError { /// ```msg``` is the error message. msg: String, }, } impl core::fmt::Display for DecodingError { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self { DecodingError::ExceedMaxHeight => { write!( f, "The height exceeds the maximum height, {}, in an SMT.", MAX_HEIGHT )?; } DecodingError::IndexOverflow => { write!(f, "Index Overflow")?; } DecodingError::TooManyEncodedBytes => { write!(f, "Too many encoded bytes than required")?; } DecodingError::BytesNotEnough => { write!(f, "Bytes are not enough for decoding.")?; } DecodingError::ValueDecodingError { msg } => { write!(f, "Value decoding error: {}", msg)?; } } Ok(()) } } impl std::error::Error for DecodingError {} /// Errors occur when operating on the SMT. #[derive(Debug, Clone, PartialEq, Eq)] pub enum TreeError { /// Error when the index of input leaf node doesn't match with that of the tree. HeightNotMatch, /// Error when the indexes are not sorted. IndexNotSorted, /// Error when there are duplicated indexes in the list. IndexDuplicated, /// Errors related to SMTree Secret. SecretError, } impl core::fmt::Display for TreeError { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self { TreeError::HeightNotMatch => { write!( f, "The height of the index doesn't match with the height of the tree." )?; } TreeError::IndexNotSorted => { write!(f, "The indexes are not sorted.")?; } TreeError::IndexDuplicated => { write!(f, "There are duplicated indexes")?; } TreeError::SecretError => { write!(f, "Wrong Secret size")?; } } Ok(()) } } impl std::error::Error for TreeError {}