1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
//! # hiroz — Zenoh-native ROS 2 in pure Rust
//!
//! `hiroz` provides ROS 2-style pub/sub, services, and actions built directly
//! on [Zenoh](https://zenoh.io), with no C/C++ dependencies.
//!
//! ## Getting started
//!
//! ```rust,ignore
//! use hiroz::prelude::*;
//! use hiroz_msgs::std_msgs::String as RosString;
//!
//! let ctx = ZContextBuilder::default().build()?;
//! let node = ctx.create_node("talker").build()?;
//! let publisher = node.create_pub::<RosString>("/chatter").build()?;
//! publisher.async_publish(&RosString { data: "hello".into() }).await?;
//! ```
//!
//! ## Sync and async APIs
//!
//! Most hiroz types expose both a blocking and an async variant of each
//! operation. The naming convention is:
//!
//! | Suffix | Behaviour |
//! |--------|-----------|
//! | *(none)* | Blocking — safe to call from any context |
//! | `_async` | Async — must be `.await`ed inside a Tokio (or compatible) runtime |
//!
//! For example, [`ZPub::publish`](pubsub::ZPub::publish) blocks until
//! the put completes, while [`ZPub::async_publish`](pubsub::ZPub::async_publish)
//! yields to the async executor.
//!
//! ## Imports
//!
//! The easiest way to import all common types is via the prelude:
//!
//! ```rust,ignore
//! use hiroz::prelude::*;
//! ```
//!
//! Or import types individually from their modules.
/// ROS 2 action support (goal, feedback, result).
/// Attachment helpers for carrying metadata alongside messages.
/// Timestamp-indexed, capacity-bounded message cache.
/// Configuration types and builder helpers.
/// Zenoh session context and context builder.
/// Dynamic (schema-less) message support.
/// Entity identity types (`TypeHash`, `TypeInfo`).
/// Structured error types (e.g. the timeout variant) shared across the API.
/// Graph events emitted by the Zenoh network graph.
/// ROS 2 graph introspection (node/topic/service discovery).
/// ROS 2 lifecycle node support (state machine, lifecycle publisher).
/// Typed message wrappers and helpers.
/// ROS 2 node creation and management.
/// Convenience re-exports for common hiroz types.
/// Publishers and subscribers.
/// Python FFI bridge types.
/// Quality-of-Service profiles and options.
/// Internal message queues.
/// Debug-time enforcement of "no user callback under a hiroz lock guard".
/// Message type metadata traits (`WithTypeInfo`, etc.).
/// ROS 2 service client and server.
/// Shared-memory transport helpers.
/// Time and clock primitives for runtime and replay integration.
/// ROS 2 topic name validation and manipulation.
/// Owned Zenoh buffer type.
/// Zero-copy buffer view for Python bindings.
/// ROS 2 parameter subsystem.
pub use GidArray;
pub use ;
pub use MessageTypeInfo;
pub use ;
pub use ZBuf;
pub use Result;
/// Builds a configured object, consuming the builder.
///
/// All hiroz builders implement this trait. Bring it into scope to call `.build()`:
///
/// ```rust,ignore
/// use hiroz::Builder;
/// let ctx = ZContextBuilder::default().build()?;
/// ```
///
/// Alternatively, use `use hiroz::prelude::*;` which includes `Builder`.