Skip to content

sqlx-postgres Fails to Build on Latest 1.91.0 #145288

@HTGAzureX1212

Description

@HTGAzureX1212

I tried this code:

// sqlx library

I expected compilation to succeed.
Instead, this happened: hangs for a while (possibly due to recursion) and then errors out with
error[E0275]: overflow evaluating the requirement `(&mut PgConnection, Oid): std::marker::Send` .

error[E0275]: overflow evaluating the requirement `(&mut PgConnection, Oid): std::marker::Send`
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-core-0.8.6\src\ext\async_stream.rs:28:56
     |
  28 |         Fut: 'a + Future<Output = Result<(), Error>> + Send,
     |                                                        ^^^^
     |
     = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`sqlx_postgres`)
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:319:36
     |
 319 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 320 | |         let base_type = self.maybe_fetch_type_info_by_oid(base_type, true).await?;
 321 | |
 322 | |         Ok(PgTypeInfo(PgType::Custom(Arc::new(PgCustomType {
...    |
 326 | |         }))))
 327 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:193:82
     |
 193 |       async fn fetch_type_by_oid(&mut self, oid: Oid) -> Result<PgTypeInfo, Error> {
     |  __________________________________________________________________________________^
 194 | |         let (name, typ_type, category, relation_id, element, base_type): (
 195 | |             String,
 196 | |             i8,
...    |
 257 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33
     |
 172 |             let info = Box::pin(async { self.fetch_type_by_oid(oid).await }).await?;
     |                                 ^^^^^
     = note: required for `Unique<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>` to implement `std::marker::Send`
note: required because it appears within the type `Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12
     |
 231 | pub struct Box<
     |            ^^^
note: required because it appears within the type `Pin<Box<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:172:33: 172:38}>>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\pin.rs:1094:12
     |
1094 | pub struct Pin<Ptr> {
     |            ^^^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:157:36
     |
 157 |       ) -> Result<PgTypeInfo, Error> {
     |  ____________________________________^
 158 | |         // first we check if this is a built-in type
 159 | |         // in the average application, the vast majority of checks should flow through this
 160 | |         if let Some(info) = PgTypeInfo::try_from_oid(oid) {
...    |
 191 | |     }
     | |_____^
note: required because it's used within this `async` fn body
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\describe.rs:104:63
     |
 104 |       ) -> Result<(Vec<PgColumn>, HashMap<UStr, usize>), Error> {
     |  _______________________________________________________________^
 105 | |         let mut columns = Vec::new();
 106 | |         let mut column_names = HashMap::new();
...    |
 137 | |         Ok((columns, column_names))
 138 | |     }
     | |_____^
note: required because it's used within this `async` block
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-postgres-0.8.6\src\connection\executor.rs:294:12
     |
 294 |           Ok(try_stream! {
     |  ____________^
 295 | |             loop {
 296 | |                 let message = self.inner.stream.recv().await?;
...    |
 375 | |             Ok(())
 376 | |         })
     | |_________^
note: required because it appears within the type `ManuallyDrop<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-core-0.8.6\src\ext\async_stream.rs:124:110: 124:120}>`
    --> C:\Users\htgaz\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\mem\manually_drop.rs:157:12
     |
 157 | pub struct ManuallyDrop<T: ?Sized> {
     |            ^^^^^^^^^^^^
note: required because it appears within the type `Instrumented<{async block@C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\sqlx-core-0.8.6\src\ext\async_stream.rs:124:110: 124:120}>`
    --> C:\Users\htgaz\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tracing-0.1.41\src\instrument.rs:266:16
     |
 266 |     pub struct Instrumented<T> {
     |                ^^^^^^^^^^^^
     = note: this error originates in the macro `try_stream` (in Nightly builds, run with -Z macro-backtrace for more info)

Meta

rustc --version --verbose:

rustc 1.91.0-nightly (1ebbd87a6 2025-08-11)
binary: rustc
commit-hash: 1ebbd87a62ce96a72b22da61b7c2c43893534842
commit-date: 2025-08-11
host: x86_64-pc-windows-msvc
release: 1.91.0-nightly
LLVM version: 21.1.0

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions