no method named `add` found for opaque type `impl futures::Future<Output = std::result::Result<JobScheduler, JobSchedulerError>>` in the current scope
aldanchenko opened this issue · 2 comments
Hello,
I'm trying to use tokio-cron-scheduler in my project. But receiving this error after compilation
error[E0599]: no method named `add` found for opaque type `impl futures::Future<Output = std::result::Result<JobScheduler, JobSchedulerError>>` in the current scope
My code is next
let mut job_scheduler = JobScheduler::new();
job_scheduler.add(Job::new_async(cron_time_str, |uuid, mut l| Box::pin( async {
Maybe you could help with this?
Thanks in advance!
Alex
Hey @aldanchenko, I was just having a play around with this and ran into a similar issue when copying the example from the docs.
Your issue is that JobScheduler::new();
is returning a future, so you'll need to await
it and then unwrap()
or match
to get the JobSchedulerLocked
which is where the add
function is actually implemented. I managed to get this working with the following snippet. Hopefully it helps you too.
#[tokio::main]
async fn main() {
let mut scheduler = JobScheduler::new().await;
match scheduler {
Ok(mut sched) => {
let job = Job::new("1/1 * * * * *", |uuid, l| {
println!("Running every second");
}).unwrap();
sched.add(job).await.unwrap();
// ...
This is just after a few minutes of playing around, so there might be a more idiomatic approach that someone can suggest!
Hi @aldanchenko
Thanks for the report, I've updated the README.
Also thanks @sudo-jaa for helping.