2021年4月9日星期五

Can I use await inside async recursive functions?

pub async fn send_and_expect(&mut self, request: rtsp_types::Request<Body>, retrying: bool) -> std::result::Result<rtsp_types::Response<Body>, ClientActionError> {  

I get:

recursion in an `async fn` requires boxing    recursive `async fn`    note: a recursive `async fn` must be rewritten to return a boxed `dyn Future`rustc(E0733)  

I found https://rust-lang.github.io/async-book/07_workarounds/04_recursion.html but it is for a function that does not use async.

What should be the way here?

I found Why recursive async functions require 'static parameters in Rust? and I changed my function to

pub fn send_and_expect(&mut self, request: rtsp_types::Request<Body>, retrying: bool)   -> Pin<Box<dyn Future <Output = std::result::Result<rtsp_types::Response<Body>, ClientActionError>>>> {  

but now I cannot use await inside my funtion. Also, how do I return things?

For example:

return Box::pin(Err(ClientActionError::CSeqMissing))  

won't work

https://stackoverflow.com/questions/67030184/can-i-use-await-inside-async-recursive-functions April 10, 2021 at 10:07AM

没有评论:

发表评论