Description
The crate compiles successfully with Rust 1.95.0 but fails to compile with Rust 1.96.0.
The following error is reported:
error[E0446]: private type `JobComponents<<Self as EtlJob>::Worker>` in public interface
--> sqlx-exasol-impl-0.9.2/src/connection/etl/job/mod.rs:113:10
|
113 | ) -> impl Future<Output = SqlxResult<JobComponents<Self::Worker>>> + Send {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| can't leak private type
...
267 | struct JobComponents<W> {
| ----------------------- `JobComponents<<Self as EtlJob>::Worker>` declared as private
Environment
- sqlx-exasol-impl: 0.9.2
- Rust 1.95.0: ✅ compiles successfully
- Rust 1.96.0: ❌ compilation fails
Notes
Rust 1.96.0 introduced stricter checks for return-position impl Trait in traits (RPITIT) when private types appear in the public interface.
It appears that JobComponents is private while being exposed through the return type of a public trait method:
impl Future<Output = SqlxResult<JobComponentsSelf::Worker>> + Send
Description
The crate compiles successfully with Rust 1.95.0 but fails to compile with Rust 1.96.0.
The following error is reported:
Environment
Notes
Rust 1.96.0 introduced stricter checks for return-position impl Trait in traits (RPITIT) when private types appear in the public interface.
It appears that JobComponents is private while being exposed through the return type of a public trait method:
impl Future<Output = SqlxResult<JobComponentsSelf::Worker>> + Send