althonos / althonos/blanket

blanket 0.4 + async-trait don't work together

Aberta
#13 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Rust
Estrelas
26
Forks
3
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

blanket 0.4 works with async traits (yay!). Unfortunately, async traits in Rust are still rather limited in functionality so it is often necessary to use the [`async-trait`](https://crates.io/crates/async-trait) crate. Unfortunately, `blanket` does not work with traits that use `async-trait`. Consider the following code:

```
trait Foo {
fn foo();
}

#[blanket::blanket(derive(Box, Mut))]
trait Bar {
async fn bar();
}

#[blanket::blanket(derive(Box, Mut))]
#[async_trait::async_trait]
trait Xyzzy {
async fn xyzzy();
}

fn main() {
println!("Hello, world!");
}
```

In the `Cargo.toml`, I have:

```
[dependencies]
blanket = "0.4"
async-trait = "0.1"
```

When compiling the above, I get:

```
$ cargo build
Compiling async-blanket v0.1.0 (/tmp/async-blanket)
error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration
--> src/main.rs:13:17
|
13 | async fn xyzzy();
| ---^-
| | |
| | lifetimes do not match method in trait
| lifetimes in impl do not match this method in trait

For more information about this error, try `rustc --explain E0195`.
error: could not compile `async-blanket` (bin "async-blanket") due to 2 previous errors
$ rustc --version
rustc 1.76.0 (07dca489a 2024-02-04)
```

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.