Я работаю над асинхронной программой Rust, но макрос join!
не работает. .await
тоже не работает. Где моя проблема?
Я видел примеры в официальной документации .
Это также не работает:
#[async_std::main]
async fn main() {}
Я не сделал Я не использую Tokio или Hyper, потому что это простая программа.
use async_std::task;
use futures::executor::block_on;
use futures::join;
use futures::stream::{FuturesUnordered, StreamExt};
use rand::distributions::{Distribution, Uniform};
use std::thread;
use std::time::{Duration, Instant};
fn main() {
let start = "bename Allah";
println!("{}", start);
fn fibonacci(n: u64) -> u64 {
if n <= 1 {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
fn fib(n: u64) {
println!("Its : {}", fibonacci(n));
}
async fn calculate() {
let do1 = fib(45);
let do2 = fib(20);
join!(do1, do2);
}
calculate();
//i used block_on(calculate()) but got same error :(
}
[dependencies]
futures = "0.3.1"
rand = "0.7"
async-std = { version = "1.2", features = ["attributes"] }
surf = "1.0"
Я получаю эту ошибку:
error[E0277]: the trait bound `(): core::future::future::Future` is not satisfied
--> src\main.rs:28:15
|
28 | join!(do1,do2);
| ^^^ the trait `core::future::future::Future` is not implemented for `()`
|
::: C:\Users\Mahdi\.cargo\registry\src\github.com-1ecc6299db9ec823\futures-util-0.3.4\src\future\maybe_done.rs:42:24
|
42 | pub fn maybe_done<Fut: Future>(future: Fut) -> MaybeDone<Fut> {
| ------ required by this bound in `futures_util::future::maybe_done::maybe_done`