#![doc = include_str!("../README.md")]
pub use mqtt_typed_client_core::*;
#[cfg(feature = "macros")]
pub use mqtt_typed_client_macros::*;
#[cfg(any(
feature = "rumqttc-use-rustls",
feature = "rumqttc-use-rustls-no-provider"
))]
pub use rumqttc::tokio_rustls;
#[cfg(any(
feature = "rumqttc-use-rustls",
feature = "rumqttc-use-rustls-no-provider"
))]
pub use rumqttc::tokio_rustls::rustls;
pub mod prelude {
pub use mqtt_typed_client_core::structured::*;
pub use mqtt_typed_client_core::{
BincodeSerializer, ClientSettings, MessageSerializer, MqttClient,
MqttClientConfig, MqttClientError, MqttConnection, MqttOptions,
MqttPublisher, MqttSubscriber, QoS, Result, SubscriptionBuilder,
Transport, TypedLastWill,
};
#[cfg(feature = "macros")]
pub use mqtt_typed_client_macros::*;
}
pub mod comparison {
#![doc = include_str!("../docs/COMPARISON_WITH_RUMQTTC.md")]
}
pub mod examples {
#![doc = include_str!("../examples/README.md")]
pub mod example_000_hello_world {
#![doc = include_str!("../examples/000_hello_world.rs")]
}
pub mod example_001_ping_pong {
#![doc = include_str!("../examples/001_ping_pong.rs")]
}
pub mod example_002_configuration {
#![doc = include_str!("../examples/002_configuration.rs")]
}
pub mod example_003_hello_world_lwt {
#![doc = include_str!("../examples/003_hello_world_lwt.rs")]
}
pub mod example_004_hello_world_tls {
#![doc = include_str!("../examples/004_hello_world_tls.rs")]
}
pub mod example_005_hello_world_serializers {
#![doc = include_str!("../examples/005_hello_world_serializers.rs")]
}
pub mod example_006_retain_and_clear {
#![doc = include_str!("../examples/006_retain_and_clear.rs")]
}
pub mod example_007_custom_patterns {
#![doc = include_str!("../examples/007_custom_patterns.rs")]
}
pub mod example_008_modular_example {
#![doc = include_str!("../examples/008_modular_example.rs")]
}
pub mod example_100_all_serializers_demo {
#![doc = include_str!("../examples/100_all_serializers_demo.rs")]
}
}
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub mod info {
pub const NAME: &str = env!("CARGO_PKG_NAME");
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const AUTHORS: &str = env!("CARGO_PKG_AUTHORS");
pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
pub const REPOSITORY: &str = env!("CARGO_PKG_REPOSITORY");
pub const HAS_MACROS: bool = cfg!(feature = "macros");
pub fn version_string() -> String {
if HAS_MACROS {
format!("{VERSION} (with macros)")
} else {
format!("{VERSION} (core only)")
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version_is_valid() {
assert!(VERSION.chars().next().unwrap().is_ascii_digit());
}
#[test]
fn test_info_module() {
assert_eq!(info::VERSION, VERSION);
assert!(!info::version_string().is_empty());
}
#[cfg(feature = "macros")]
#[test]
#[allow(clippy::assertions_on_constants)]
fn test_macros_feature_enabled() {
assert!(info::HAS_MACROS);
assert!(info::version_string().contains("with macros"));
}
#[cfg(not(feature = "macros"))]
#[test]
#[allow(clippy::assertions_on_constants)]
fn test_macros_feature_disabled() {
assert!(!info::HAS_MACROS);
assert!(info::version_string().contains("core only"));
}
}
#[cfg(feature = "macros")]
#[doc = ""]
#[doc = "## Procedural Macros"]
#[doc = ""]
#[doc = "This build includes procedural macros for enhanced type safety and \
code generation."]
#[doc = "See the `mqtt_typed_client_macros` documentation for detailed macro \
usage."]
pub mod _macro_docs {}
#[cfg(not(feature = "macros"))]
#[doc = ""]
#[doc = "## Core Only Build"]
#[doc = ""]
#[doc = "This build does not include procedural macros. To enable macros, add \
the 'macros' feature:"]
#[doc = "```toml"]
#[doc = "[dependencies]"]
#[doc = "mqtt-typed-client = { version = \"0.2\", features = [\"macros\"] }"]
#[doc = "```"]
pub mod _core_only_docs {}