mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-02-12 01:55:48 +00:00
derive display for errors
This commit is contained in:
parent
615c4f662e
commit
771aa867c1
@ -6,4 +6,7 @@ edition = "2018"
|
|||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
assert_matches = "1.3.0"
|
assert_matches = "1.3.0"
|
||||||
quickcheck = "0.8"
|
quickcheck = "0.8"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
derive_more = "0.15"
|
20
src/lib.rs
20
src/lib.rs
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#[cfg(test)] #[macro_use] extern crate assert_matches;
|
#[cfg(test)] #[macro_use] extern crate assert_matches;
|
||||||
#[cfg(test)] #[macro_use] extern crate quickcheck;
|
#[cfg(test)] #[macro_use] extern crate quickcheck;
|
||||||
|
extern crate derive_more;
|
||||||
|
|
||||||
|
|
||||||
mod tree;
|
mod tree;
|
||||||
|
|
||||||
@ -26,19 +28,25 @@ pub struct NodeData {
|
|||||||
shielded_tx: u64,
|
shielded_tx: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug, derive_more::Display)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
#[display(fmt="Node/leaf expected to be in memory: {}", _0)]
|
||||||
ExpectedInMemory(EntryLink),
|
ExpectedInMemory(EntryLink),
|
||||||
ExpectedNode(Option<EntryLink>),
|
#[display(fmt="Node expected")]
|
||||||
|
ExpectedNode,
|
||||||
|
#[display(fmt="Node expected, not leaf: {}", _0)]
|
||||||
|
ExpectedNodeForLink(EntryLink),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reference to to the tree node.
|
/// Reference to to the tree node.
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
#[derive(Clone, Copy, Debug)]
|
#[derive(Clone, Copy, Debug, derive_more::Display)]
|
||||||
pub enum EntryLink {
|
pub enum EntryLink {
|
||||||
/// Reference to the stored (in the array representation) leaf/node.
|
/// Reference to the stored (in the array representation) leaf/node.
|
||||||
|
#[display(fmt="stored(@{})", _0)]
|
||||||
Stored(u32),
|
Stored(u32),
|
||||||
/// Reference to the generated leaf/node.
|
/// Reference to the generated leaf/node.
|
||||||
|
#[display(fmt="generated(@{})", _0)]
|
||||||
Generated(u32),
|
Generated(u32),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,14 +79,14 @@ impl Entry {
|
|||||||
|
|
||||||
pub fn left(&self) -> Result<EntryLink, Error> {
|
pub fn left(&self) -> Result<EntryLink, Error> {
|
||||||
match self.kind {
|
match self.kind {
|
||||||
EntryKind::Leaf => { Err(Error::ExpectedNode(None)) }
|
EntryKind::Leaf => { Err(Error::ExpectedNode) }
|
||||||
EntryKind::Node(left, _) => Ok(left)
|
EntryKind::Node(left, _) => Ok(left)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn right(&self) -> Result<EntryLink, Error> {
|
pub fn right(&self) -> Result<EntryLink, Error> {
|
||||||
match self.kind {
|
match self.kind {
|
||||||
EntryKind::Leaf => { Err(Error::ExpectedNode(None)) }
|
EntryKind::Leaf => { Err(Error::ExpectedNode) }
|
||||||
EntryKind::Node(_, right) => Ok(right)
|
EntryKind::Node(_, right) => Ok(right)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,7 +101,7 @@ impl From<NodeData> for Entry {
|
|||||||
impl Error {
|
impl Error {
|
||||||
pub (crate) fn augment(self, link: EntryLink) -> Self {
|
pub (crate) fn augment(self, link: EntryLink) -> Self {
|
||||||
match self {
|
match self {
|
||||||
Error::ExpectedNode(None) => Error::ExpectedNode(Some(link)),
|
Error::ExpectedNode => Error::ExpectedNodeForLink(link),
|
||||||
val => val
|
val => val
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user