diff --git a/CHANGELOG.md b/CHANGELOG.md index 01cee56c..f9cbcfec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ # Changelog +## v0.7.0 (Unreleased) + +- Features: Replace "sync" with "rtu-sync" and "tcp-sync" respectively + ## v0.6.0 (2023-01-30) - Added support for the `MaskWriteRegister` function code. diff --git a/Cargo.toml b/Cargo.toml index 6b7b1cec..fbd6737a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,9 @@ socket2 = { version = "0.4.7", optional = true, default-features = false } tokio = { version = "1.25.0", default-features = false } # Disable default-features to exclude unused dependency on libudev tokio-serial = { version = "5.4.4", optional = true, default-features = false } -tokio-util = { version = "0.7.4", features = ["codec"] } +tokio-util = { version = "0.7.4", default-features = false, features = [ + "codec", +] } [dev-dependencies] env_logger = "0.10.0" @@ -39,12 +41,20 @@ futures = "0.3.25" tokio = { version = "1.25.0", features = ["net", "macros", "io-util", "rt", "time"] } [features] -default = ["tcp", "rtu"] -rtu = ["tokio-serial", "futures-util/sink"] +default = ["rtu", "tcp"] +rtu = ["futures-util/sink"] tcp = ["tokio/net", "futures-util/sink"] -sync = ["tokio/rt"] -server = ["futures", "socket2/all", "tokio/macros", "tokio/rt", "tokio/rt-multi-thread"] -tcp-server-unstable = ["tcp", "server"] +rtu-sync = ["rtu", "tokio-serial"] +tcp-sync = ["tcp"] +server = ["futures"] +rtu-server = ["rtu", "server", "tokio/macros", "tokio-serial"] +tcp-server-unstable = [ + "tcp", + "server", + "socket2/all", + "tokio/macros", + "tokio/rt-multi-thread", +] [badges] maintenance = { status = "actively-developed" } @@ -52,7 +62,7 @@ maintenance = { status = "actively-developed" } [[example]] name = "rtu-client-sync" path = "examples/rtu-client-sync.rs" -required-features = ["rtu", "sync"] +required-features = ["rtu-sync"] [[example]] name = "rtu-client" @@ -62,7 +72,7 @@ required-features = ["rtu"] [[example]] name = "rtu-server" path = "examples/rtu-server.rs" -required-features = ["rtu", "server"] +required-features = ["rtu-server"] [[example]] name = "tcp-client-custom-fn" @@ -72,7 +82,7 @@ required-features = ["tcp"] [[example]] name = "tcp-client-sync" path = "examples/tcp-client-sync.rs" -required-features = ["tcp", "sync"] +required-features = ["tcp-sync"] [[example]] name = "tcp-client" @@ -82,4 +92,4 @@ required-features = ["tcp"] [[example]] name = "tcp-server" path = "examples/tcp-server.rs" -required-features = ["tcp", "server", "tcp-server-unstable"] +required-features = ["tcp-server-unstable"] diff --git a/src/client/mod.rs b/src/client/mod.rs index e6789a19..850fd328 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -12,15 +12,15 @@ use async_trait::async_trait; use crate::{frame::*, slave::*}; -#[cfg(feature = "sync")] -pub mod sync; - #[cfg(feature = "rtu")] pub mod rtu; #[cfg(feature = "tcp")] pub mod tcp; +#[cfg(any(feature = "rtu-sync", feature = "tcp-sync"))] +pub mod sync; + /// Transport independent asynchronous client trait #[async_trait] pub trait Client: SlaveContext + Send + Debug { diff --git a/src/client/sync/mod.rs b/src/client/sync/mod.rs index 06190232..e9e9524f 100644 --- a/src/client/sync/mod.rs +++ b/src/client/sync/mod.rs @@ -3,15 +3,12 @@ //! Synchronous Modbus client -// TODO: Add missing documentation #![allow(missing_docs)] -/// RTU client connections -#[cfg(feature = "rtu")] +#[cfg(feature = "rtu-sync")] pub mod rtu; -/// TCP client connections -#[cfg(feature = "tcp")] +#[cfg(feature = "tcp-sync")] pub mod tcp; use super::{ diff --git a/src/lib.rs b/src/lib.rs index 586b01ad..2ed9a2a2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,6 +5,9 @@ #![warn(rust_2021_compatibility)] #![warn(missing_debug_implementations)] #![warn(unreachable_pub)] +#![warn(clippy::cast_lossless)] +// TODO (v0.6): Decorate functions with #[must_use] +//#![warn(clippy::must_use_candidate)] #![cfg_attr(not(test), warn(unsafe_code))] #![warn(clippy::all)] #![warn(clippy::cast_lossless)] diff --git a/src/prelude.rs b/src/prelude.rs index 1e8be57b..47716569 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -32,6 +32,12 @@ pub mod tcp { #[cfg(feature = "server")] pub use crate::server; +#[allow(missing_docs)] +#[cfg(any(feature = "rtu-sync", feature = "tcp-sync"))] +pub mod sync { + pub use crate::client::sync::*; +} + /////////////////////////////////////////////////////////////////// /// Structs /////////////////////////////////////////////////////////////////// @@ -43,13 +49,13 @@ pub use crate::slave::{Slave, SlaveId}; /////////////////////////////////////////////////////////////////// pub use crate::client::{Client, Reader, Writer}; -#[cfg(feature = "sync")] +#[cfg(any(feature = "rtu-sync", feature = "tcp-sync"))] pub use crate::client::sync::Client as SyncClient; -#[cfg(feature = "sync")] +#[cfg(any(feature = "rtu-sync", feature = "tcp-sync"))] pub use crate::client::sync::Reader as SyncReader; -#[cfg(feature = "sync")] +#[cfg(any(feature = "rtu-sync", feature = "tcp-sync"))] pub use crate::client::sync::Writer as SyncWriter; pub use crate::slave::SlaveContext; diff --git a/src/server/mod.rs b/src/server/mod.rs index 0747b35f..72888606 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -6,7 +6,7 @@ // TODO: Add missing documentation #![allow(missing_docs)] -#[cfg(feature = "rtu")] +#[cfg(feature = "rtu-server")] pub mod rtu; #[cfg(feature = "tcp-server-unstable")]