bee_inx/
lib.rs

1// Copyright 2022 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4mod block;
5pub mod client;
6mod error;
7mod ledger;
8mod metadata;
9mod milestone;
10mod node;
11mod protocol_parameters;
12mod raw;
13mod request;
14mod treasury;
15
16pub use self::{
17    block::*, error::Error, ledger::*, metadata::*, milestone::*, node::*, protocol_parameters::*, raw::*, request::*,
18    treasury::*,
19};
20
21pub mod proto {
22    pub use inx::proto::*;
23}
24
25#[macro_export]
26macro_rules! maybe_missing {
27    ($object:ident.$field:ident) => {
28        $object.$field.ok_or(Self::Error::MissingField(stringify!($field)))?
29    };
30}
31
32#[cfg(test)]
33mod test {
34    use super::*;
35
36    #[test]
37    fn macro_missing_field() {
38        let proto = proto::TreasuryOutput {
39            milestone_id: None,
40            amount: 42,
41        };
42        let err = TreasuryOutput::try_from(proto).unwrap_err();
43        assert!(matches!(err, bee_block::InxError::MissingField("milestone_id")));
44    }
45}