blanket 0.4 + async-trait don't work together
- 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.