althonos / althonos/blanket

blanket 0.4 + async-trait don't work together

Open
#13 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
26
Forks
3
PR merge metrics
No merged PRs in 30d

Description

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)
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.