Могу ли я инициализировать `thread_local` из функции asyn c? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь инициализировать thread_local! из асинхронной c функции.

Когда я пытаюсь скомпилировать код, который у меня есть, компилятор выдает ошибку, сообщающую, что ожидал тип std::rc::Rc, но обнаружил opaque type.

Мой код выглядит примерно так

async fn async_function() -> std::rc::Rc<SomeTypeWhichImplementsStdFuture> {
   let some_type = SomeTypeWhichImplementsStdFuture::new();
   std::rc::Rc::new(match some_type.await {
      OutputOfSomeTypesFuture::Success => {
         some_type
      }
      OutputOfSomeTypesFuture::Error => {
        panic!("some error");
      }
   });
}

thread_local!(
    pub static SOME_TYPE_THREAD_LOCAL: std::rc::Rc<SomeTypeWhichImplementsStdFuture> 
    = async_function());

, что дает ошибку error[E0308]: mismatched types.

Возможно ли это? Если нет, то как еще я могу go добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...