//! Rust 特有语法糖集合 (sugar)
//!
//! 本模块在 **不修改主 .rs 文件** 的前提下, 通过 Rust 孤儿规则允许的
//! "本 crate 内为本 crate 类型实现外部 trait", 给已有 SDK 类型追加
//! 一批 Rust 惯用法 API. 全部为可选语法糖, 不影响向后兼容:
//!
//! - **索引语法** (`master[1]`): 见 [`index`]
//! - **类型转换** (`From`/`Into`): 见 [`conversions`]
//! - **Display 增强** (用户友好的枚举打印): 见 [`display`]
//! - **状态变化通道** (`mpsc::channel` 替代回调): 见 [`state_stream`]
//! - **迭代器扩展** (按状态/组过滤): 见 [`iter_ext`]
//! - **错误传播** (`try_slave?`/`slave_opt`): 见 [`try_slave`]
//! - **异步流** (`tokio::Stream`, 仅 `async-tokio` feature): 见 [`async_stream`]
//!
//! # 使用方式
//!
//! 一行 use 引入全部语法糖:
//!
//! ```no_run
//! use darra_ethercat::sugar::prelude::*;
//! use darra_ethercat::EtherCATMaster;
//!
//! let master = EtherCATMaster::new().unwrap();
//!
//! // 索引语法
//! let s1 = &master[1];
//!
//! // 链式过滤
//! for slave in master.iter().by_state(darra_ethercat::EcState::Operational) {
//!     println!("{}", slave);
//! }
//!
//! // 错误传播
//! fn use_first(m: &EtherCATMaster) -> darra_ethercat::Result<()> {
//!     let s = m.try_slave(1)?;
//!     println!("vendor: 0x{:08X}", s.vendor_id());
//!     Ok(())
//! }
//! ```

pub mod index;
pub mod conversions;
pub mod display;
pub mod state_stream;
pub mod iter_ext;
pub mod try_slave;

#[cfg(feature = "async-tokio")]
pub mod async_stream;

pub mod prelude;
