Closed
Description
Before Rust 1.39, I successfully used this library. But with the advent of async/await, I was completely confused. Below is an example of my broken code:
#[juniper::object(Context = Context)]
impl Article {
fn id(&self) -> i32 {
self.id
}
fn title(&self) -> &str {
self.title.as_str()
}
async fn authors (&self, context: &Context) -> FieldResult<Vec<Author>> {
let authors = context.authors_loader().load_many(self.author_ids.clone());
Ok(authors.await)
}
}
I'm trying to load an authors of the article with dataloader, but I got confused with the return types and how to get authors from the dataloader. The compiler gives me an error:
error[E0728]: `await` is only allowed inside `async` functions and blocks
--> src/schema.rs:52:12
|
40 | #[juniper::object(Context = Context)]
| ------------------------------------- this is not `async`
...
52 | Ok(authors.await)
| ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
error[E0308]: mismatched types
--> src/schema.rs:52:12
|
52 | Ok(authors.await)
| ^^^^^^^^^^^^^ expected struct `std::vec::Vec`, found enum `std::result::Result`
|
= note: expected type `std::vec::Vec<_>`
found type `std::result::Result<std::vec::Vec<_>, dataloader::LoadError<()>>`
error: aborting due to 2 previous errors
Metadata
Metadata
Assignees
Labels
No labels