Я пытаюсь инициализировать 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 добиться этого?