多线程应用程序无法使用错误链进行编译

时间:2017-09-29 14:43:00

标签: multithreading rust

我将CLIENT LIST > ~/clients.txt介绍到以前正在运行的应用程序中。错误本身很明显,error-chain缺少std::error::Error + 'static

的实现
trait std::marker::Send

我不知道如何解决这个问题。请注意,我使用的是up to date fork of mqttc/mqtt3而不是上游包。{/ p>

1 个答案:

答案 0 :(得分:2)

mqttc::Error包含mqttc::netopt::Error,而Box<std::error::Error>又包含std::boxed::Box<std::error::Error + 'static>(去除std::error::ErrorError这里是一个特质对象。因为{ {1}}特质没有Send作为超级实体,Error的实施不需要实施Send。因此,Box<std::error::Error>不会实施Send,因为并非所有类型T: std::error::Error都实施Send

可以通过将mqttc::netopt::Error类型更改为使用Box<std::error::Error + Send>而不是Box<std::error::Error>来修复此问题(这将是图书馆的重大更改)。