anyhow::Result<()> {
let thread = std::thread::spawn(|| { return true; });
thread.join()?; // error[E0277]: the size for values of type dyn Any + Send cannot be known at compilation time
Ok(())
}
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f6bf85458c98791f60db9b8362c02aa6
Ему не нравится anyhow::Result. Похоже оператор ? не любит такой Result.
мб потому что размер dyn Any неизвестен.
ему не anyhow не нравится по-моему, а thread::Result
дока предлагает его либо в панику отдавать, либо матчить
https://doc.rust-lang.org/stable/std/thread/type.Result.html
выглядит ровно как https://github.com/dtolnay/anyhow/issues/39 > thread::spawn doesn't return an error, the E in the Result is a box of whatever value your thread panicked with, which probably doesn't implement Error and maybe doesn't implement Display or Debug. You are supposed to propagate it by unwrapping.
unwrapping? в доке пишут про resume_unwind
там два варианта: - resume_unwind и пускай дочернего потока паника летит дальше уже в этом потоке, потенциально грохая все приложение - обработать ошибку на месте и продолжить нормальное выполнение текущего потока
Понял. Надёжнее unwrap сделать, чтобы потом не гадать почему прога так странно работает )
Я вам добился использовать просто ?, но наверное так делать всё же не надо. https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=f6bf85458c98791f60db9b8362c02aa6
Обсуждают сегодня