Error handling “配置应用程序货物”;“运行时”;依赖关系以避免应用程序执行时出现延迟恐慌?

Error handling “配置应用程序货物”;“运行时”;依赖关系以避免应用程序执行时出现延迟恐慌?,error-handling,rust,runtime-error,rust-cargo,rust-tokio,Error Handling,Rust,Runtime Error,Rust Cargo,Rust Tokio,我是个新手,克服了一些问题后,想问一下正确的方法。 问题是关于“延迟”运行时问题,取决于。。。运行时生锈 答案是表面上的,但似乎并没有基本的书籍为新手明确。在谷歌搜索的时候,也发现了很多类似的问题,所以这个问题对我来说肯定不是唯一的 在我的例子中,问题是(可能是经典的)错误来自cargos与不同tokio运行时版本的版本不匹配: 没有反应堆运行,必须从东京1.x运行时的上下文调用 (我使用的是actix web app,并添加了一些现代版本的mongodb依赖项,这将更现代的tokio运行时版本

我是个新手,克服了一些问题后,想问一下正确的方法。 问题是关于“延迟”运行时问题,取决于。。。运行时生锈

答案是表面上的,但似乎并没有基本的书籍为新手明确。在谷歌搜索的时候,也发现了很多类似的问题,所以这个问题对我来说肯定不是唯一的

在我的例子中,问题是(可能是经典的)错误来自cargos与不同tokio运行时版本的版本不匹配:
没有反应堆运行,必须从东京1.x运行时的上下文调用

(我使用的是actix web app,并添加了一些现代版本的mongodb依赖项,这将更现代的tokio运行时版本带入了应用范围。)

我在谷歌上搜索,了解(我希望)原因,修正版本——一切都变好了,但是

最让我困惑的是,该应用程序正在运行所有现有的http内容,直到mongodb交互出现,所有处理程序都出现了紧急错误

我的意思是,这是一个真正延迟的运行时问题,在构建阶段或某些快速故障运行机制中没有得到暗示

所以问题是:

  • 是否有一个经验法则如何为依赖项配置货物版本?我来自java世界,所以依赖地狱对我来说并不是一件新鲜事,但最好的实践方法会很好听
  • 有没有办法让应用程序至少快速失效,这样在启动时就能注意到问题?我意识到mbi可以通过测试覆盖应用程序行为并覆盖隐藏路径,但有其他方法吗

我认为这不是生锈或货物的一般问题。只是东京决定在运行时报告问题。您可以使用
cargo tree
来显示重复的依赖项,事实上,当使用一个板条箱的源代码不交互时,使用一个板条箱的不同版本是可以的。例如,我有一个类似的问题,我需要使用与actix web用于构造ServerConfig并将其传递给actix web的相同版本的rustls,否则它将无法编译。