1#![deny(unsafe_code)]
26#![warn(
27    missing_docs,
28    trivial_casts,
29    trivial_numeric_casts,
30    unused_import_braces,
31    unused_qualifications
32)]
33#![cfg_attr(not(feature = "std"), no_std)]
34
35#[cfg(all(not(feature = "std"), not(feature = "alloc")))]
36compile_error!(r#"The "no_std" feature currently requires the "alloc" feature"#);
37
38#[cfg(feature = "std")]
39extern crate core;
40
41#[cfg(feature = "alloc")]
42#[macro_use]
43extern crate alloc;
44
45#[macro_use]
47extern crate tracing;
48
49pub use async_trait::async_trait;
50
51#[doc(inline)]
53pub use async_trait::async_trait as worker;
54#[doc(inline)]
56pub use async_trait::async_trait as processor;
57
58extern crate ockam_macros;
59
60pub use ockam_macros::{Message, TryClone};
61
62extern crate futures_util;
63
64pub mod access_control;
66pub mod api;
67pub mod compat;
68
69pub mod debugger;
71pub mod flow_control;
72
73pub mod hex_encoding;
75
76#[cfg(feature = "std")]
78pub mod env;
79
80pub mod bare;
81mod cbor;
82mod error;
83mod identity;
84mod message;
85mod processor;
86mod routing;
87mod uint;
88mod worker;
89
90pub use access_control::*;
91pub use cbor::*;
92pub use error::*;
93pub use identity::*;
94pub use message::*;
95pub use processor::*;
96pub use routing::*;
97pub use uint::*;
98pub use worker::*;
99
100#[cfg(all(not(feature = "std"), feature = "alloc"))]
101#[doc(hidden)]
102pub use compat::println;
103
104#[cfg(feature = "std")]
105#[doc(hidden)]
106pub use std::println;
107
108pub trait TryClone: Sized {
110    fn try_clone(&self) -> Result<Self>;
112}
113
114impl<D> TryClone for D
115where
116    D: Clone + Sync,
117{
118    fn try_clone(&self) -> Result<Self> {
119        Ok(self.clone())
120    }
121}
122
123#[inline(always)]
125pub fn deny() -> Result<bool> {
126    Ok(false)
127}
128
129#[inline(always)]
131pub fn allow() -> Result<bool> {
132    Ok(true)
133}