github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/validator/src/database/database.rs (about)

     1  /*
     2   * Copyright 2018 Intel Corporation
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   * ------------------------------------------------------------------------------
    16   */
    17  
    18  use std;
    19  
    20  #[derive(Debug)]
    21  pub enum DatabaseError {
    22      InitError(String),
    23      ReaderError(String),
    24      WriterError(String),
    25      CorruptionError(String),
    26      NotFoundError(String),
    27      DuplicateEntry,
    28  }
    29  
    30  impl std::fmt::Display for DatabaseError {
    31      fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
    32          match *self {
    33              DatabaseError::InitError(ref msg) => write!(f, "InitError: {}", msg),
    34              DatabaseError::ReaderError(ref msg) => write!(f, "ReaderError: {}", msg),
    35              DatabaseError::WriterError(ref msg) => write!(f, "WriterError: {}", msg),
    36              DatabaseError::CorruptionError(ref msg) => write!(f, "CorruptionError: {}", msg),
    37              DatabaseError::NotFoundError(ref msg) => write!(f, "NotFoundError: {}", msg),
    38              DatabaseError::DuplicateEntry => write!(f, "DuplicateEntry"),
    39          }
    40      }
    41  }
    42  
    43  impl std::error::Error for DatabaseError {
    44      fn description(&self) -> &str {
    45          match *self {
    46              DatabaseError::InitError(ref msg) => msg,
    47              DatabaseError::ReaderError(ref msg) => msg,
    48              DatabaseError::WriterError(ref msg) => msg,
    49              DatabaseError::CorruptionError(ref msg) => msg,
    50              DatabaseError::NotFoundError(ref msg) => msg,
    51              DatabaseError::DuplicateEntry => "DuplicateEntry",
    52          }
    53      }
    54  
    55      fn cause(&self) -> Option<&std::error::Error> {
    56          match *self {
    57              DatabaseError::InitError(_) => None,
    58              DatabaseError::ReaderError(_) => None,
    59              DatabaseError::WriterError(_) => None,
    60              DatabaseError::CorruptionError(_) => None,
    61              DatabaseError::NotFoundError(_) => None,
    62              DatabaseError::DuplicateEntry => None,
    63          }
    64      }
    65  }