commit cd1edf3b32eede0492cda04ba9ecf545460a7f21
parent db0437e839f6486c57f82face9a36f72c3d4492f
Author: Zack Newman <zack@philomathiclife.com>
Date: Mon, 23 Jun 2025 11:21:36 -0600
more lints
Diffstat:
M | Cargo.toml | | | 69 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- |
M | src/lib.rs | | | 50 | ++++++++++++++++---------------------------------- |
2 files changed, 81 insertions(+), 38 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -10,20 +10,81 @@ name = "postgres_rustls"
readme = "README.md"
repository = "https://git.philomathiclife.com/repos/postgres_rustls/"
rust-version = "1.86.0"
-version = "0.1.2"
+version = "0.1.3"
+
+[lints.rust]
+ambiguous_negative_literals = { level = "deny", priority = -1 }
+closure_returning_async_block = { level = "deny", priority = -1 }
+deref_into_dyn_supertrait = { level = "deny", priority = -1 }
+ffi_unwind_calls = { level = "deny", priority = -1 }
+future_incompatible = { level = "deny", priority = -1 }
+impl_trait_redundant_captures = { level = "deny", priority = -1 }
+keyword-idents = { level = "deny", priority = -1 }
+let_underscore = { level = "deny", priority = -1 }
+linker_messages = { level = "deny", priority = -1 }
+macro_use_extern_crate = { level = "deny", priority = -1 }
+meta_variable_misuse = { level = "deny", priority = -1 }
+missing_copy_implementations = { level = "deny", priority = -1 }
+missing_debug_implementations = { level = "deny", priority = -1 }
+missing_docs = { level = "deny", priority = -1 }
+non_ascii_idents = { level = "deny", priority = -1 }
+nonstandard_style = { level = "deny", priority = -1 }
+redundant_imports = { level = "deny", priority = -1 }
+redundant_lifetimes = { level = "deny", priority = -1 }
+refining_impl_trait = { level = "deny", priority = -1 }
+rust_2018_compatibility = { level = "deny", priority = -1 }
+rust_2018_idioms = { level = "deny", priority = -1 }
+rust_2021_compatibility = { level = "deny", priority = -1 }
+rust_2024_compatibility = { level = "deny", priority = -1 }
+single_use_lifetimes = { level = "deny", priority = -1 }
+trivial_casts = { level = "deny", priority = -1 }
+trivial_numeric_casts = { level = "deny", priority = -1 }
+unit_bindings = { level = "deny", priority = -1 }
+unknown_lints = { level = "deny", priority = -1 }
+unnameable_types = { level = "deny", priority = -1 }
+unreachable_pub = { level = "deny", priority = -1 }
+unsafe_code = { level = "deny", priority = -1 }
+unstable_features = { level = "deny", priority = -1 }
+unused = { level = "deny", priority = -1 }
+unused_crate_dependencies = { level = "deny", priority = -1 }
+unused_import_braces = { level = "deny", priority = -1 }
+unused_lifetimes = { level = "deny", priority = -1 }
+unused_qualifications = { level = "deny", priority = -1 }
+unused_results = { level = "deny", priority = -1 }
+variant_size_differences = { level = "deny", priority = -1 }
+warnings = { level = "deny", priority = -1 }
+
+[lints.clippy]
+all = { level = "deny", priority = -1 }
+cargo = { level = "deny", priority = -1 }
+complexity = { level = "deny", priority = -1 }
+correctness = { level = "deny", priority = -1 }
+nursery = { level = "deny", priority = -1 }
+pedantic = { level = "deny", priority = -1 }
+perf = { level = "deny", priority = -1 }
+restriction = { level = "deny", priority = -1 }
+style = { level = "deny", priority = -1 }
+suspicious = { level = "deny", priority = -1 }
+# Noisy, opinionated, and likely don't prevent bugs or improve APIs.
+arbitrary_source_item_ordering = "allow"
+blanket_clippy_restriction_lints = "allow"
+implicit_return = "allow"
+missing_trait_methods = "allow"
+return_and_then = "allow"
+single_call_fn = "allow"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
-sha2 = { version = "0.10.8", default-features = false }
-tokio = { version = "1.44.1", default-features = false }
+sha2 = { version = "0.10.9", default-features = false }
+tokio = { version = "1.45.1", default-features = false }
tokio-postgres = { version = "0.7.13", default-features = false }
tokio-rustls = { version = "0.26.2", default-features = false }
[dev-dependencies]
-tokio = { version = "1.44.1", default-features = false, features = ["rt"] }
+tokio = { version = "1.45.1", default-features = false, features = ["rt"] }
tokio-rustls = { version = "0.26.2", default-features = false, features = ["ring"] }
diff --git a/src/lib.rs b/src/lib.rs
@@ -6,43 +6,11 @@
//!
//! `postgres_rustls` is a library that adds TLS support to [`tokio_postgres`] using [`tokio_rustls`].
#![cfg_attr(docsrs, feature(doc_cfg))]
-#![deny(
- unknown_lints,
- future_incompatible,
- let_underscore,
- missing_docs,
- nonstandard_style,
- refining_impl_trait,
- rust_2018_compatibility,
- rust_2018_idioms,
- rust_2021_compatibility,
- rust_2024_compatibility,
- unsafe_code,
- unused,
- warnings,
- clippy::all,
- clippy::cargo,
- clippy::complexity,
- clippy::correctness,
- clippy::nursery,
- clippy::pedantic,
- clippy::perf,
- clippy::restriction,
- clippy::style,
- clippy::suspicious
-)]
#![expect(
- clippy::arbitrary_source_item_ordering,
- clippy::blanket_clippy_restriction_lints,
- clippy::implicit_return,
- clippy::missing_trait_methods,
clippy::multiple_crate_versions,
- clippy::return_and_then,
- clippy::single_call_fn,
- reason = "noisy, opinionated, and likely doesn't prevent bugs or improve APIs"
+ reason = "dependencies haven't updated to newest crates"
)]
use core::{
- future::Future,
pin::Pin,
task::{Context, Poll},
};
@@ -56,7 +24,7 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_postgres::tls::MakeTlsConnect;
use tokio_postgres::tls::{ChannelBinding, TlsConnect as PgTlsConnect, TlsStream as PgTlsStream};
use tokio_rustls::{
- self, Connect,
+ Connect,
client::TlsStream as RustlsStream,
rustls::{
ClientConfig,
@@ -362,6 +330,7 @@ impl Hash {
}
}
/// The [`TlsConnector::Stream`] returned from [`TlsConnectorFuture::poll`].
+#[derive(Debug)]
pub struct TlsStream<S>(RustlsStream<S>);
impl<S: AsyncRead + AsyncWrite + Unpin> AsyncRead for TlsStream<S> {
#[inline]
@@ -453,6 +422,10 @@ impl<S: AsyncRead + AsyncWrite + Unpin> PgTlsStream for TlsStream<S> {
}
}
/// [`TlsConnector::Future`] returned from [`TlsConnector::connect`].
+#[expect(
+ missing_debug_implementations,
+ reason = "Connect does not implement Debug, so we don't"
+)]
pub struct TlsConnectorFuture<S>(Connect<S>);
impl<S: AsyncRead + AsyncWrite + Unpin> Future for TlsConnectorFuture<S> {
type Output = io::Result<TlsStream<S>>;
@@ -462,6 +435,10 @@ impl<S: AsyncRead + AsyncWrite + Unpin> Future for TlsConnectorFuture<S> {
}
}
/// Connects to the PostgreSQL server.
+#[expect(
+ missing_debug_implementations,
+ reason = "TlsConnector does not implement Debug, so we don't"
+)]
#[expect(clippy::doc_markdown, reason = "PostgreSQL is correct")]
pub struct TlsConnector<'domain> {
/// Used to connect to the PostgreSQL server.
@@ -477,6 +454,7 @@ impl<'domain> TlsConnector<'domain> {
/// # Errors
///
/// Errors iff [`ServerName::try_from`] does when passed `domain`.
+ #[expect(single_use_lifetimes, reason = "false positive")]
#[inline]
pub fn new<'dom: 'domain>(
connector: tokio_rustls::TlsConnector,
@@ -495,6 +473,10 @@ impl<S: AsyncRead + AsyncWrite + Unpin> PgTlsConnect<S> for TlsConnector<'static
}
}
/// [`MakeTlsConnect`] based on [`tokio_rustls::TlsConnector`].
+#[expect(
+ missing_debug_implementations,
+ reason = "TlsConnector does not implement Debug, so we don't"
+)]
#[cfg_attr(docsrs, doc(cfg(feature = "runtime")))]
#[cfg(feature = "runtime")]
#[derive(Clone)]