ibc_primitives/
lib.rs

1//! Contains primitives types and traits common to various IBC components.
2#![no_std]
3#![forbid(unsafe_code)]
4#![cfg_attr(not(test), deny(clippy::unwrap_used))]
5#![cfg_attr(not(test), deny(clippy::disallowed_methods, clippy::disallowed_types))]
6#![deny(
7    warnings,
8    trivial_numeric_casts,
9    unused_import_braces,
10    unused_qualifications,
11    rust_2018_idioms
12)]
13
14extern crate alloc;
15
16#[cfg(feature = "std")]
17extern crate std;
18
19pub mod prelude;
20pub mod utils;
21
22mod traits;
23pub use traits::*;
24
25mod types;
26pub use types::*;
27
28// Helper module for serializing and deserializing types through the `String`
29// primarily used by IBC applications.
30#[cfg(feature = "serde")]
31pub mod serializers;
32
33pub mod proto {
34    pub use ibc_proto::google::protobuf::{Any, Duration, Timestamp};
35    pub use ibc_proto::{Error, Protobuf};
36}
37
38#[cfg(feature = "arbitrary")]
39pub fn arb_protobuf_any(
40    u: &mut arbitrary::Unstructured<'_>,
41) -> arbitrary::Result<ibc_proto::google::protobuf::Any> {
42    let type_url: std::string::String = arbitrary::Arbitrary::arbitrary(u)?;
43    let value: std::vec::Vec<u8> = arbitrary::Arbitrary::arbitrary(u)?;
44    Ok(ibc_proto::google::protobuf::Any { type_url, value })
45}