如何解决板条箱“std”中的 Substrate`duplicate lang item(“myexternalcrate”取决于):“panic_impl”与 sr-io 冲突

T9b*_*T9b 5 substrate

我在我的 Substrate 1.0 运行时模块(基于node-template)中使用了一个 extern crate,它给出了一个编译错误

duplicate lang item in crate 'std' (which 'myexternalcrate' depends on): 'panic_impl'.

= note: first defined in crate `sr_io` (which `node_template_runtime` depends on).
Run Code Online (Sandbox Code Playgroud)

如果我正确理解了该消息,那么我认为如果开发人员想要包含依赖于std已在 中实现的功能的外部板条箱,这可能是一个常见问题sr-io,但我不确定这是否正确。

我在这里看到了这个问题,它似乎已被修复,sr-io但这似乎不是这里的原因。

他们是解决这个问题的另一种方法吗?

编辑:添加更改Cargo.toml 我们正在尝试引入名为 nacl 的板条箱

[dependencies]
nacl = {version = "0.3.0", default-features = false}
Run Code Online (Sandbox Code Playgroud)

加入 lib.rs

extern crate nacl;
Run Code Online (Sandbox Code Playgroud)

在运行时模块中

use nacl::public_box::*;
Run Code Online (Sandbox Code Playgroud)

Sha*_*izi 6

您尝试使用的 crate ( rust-nacl) 不支持no_std,因此无法在 Substrate 运行时环境中使用。

选项有:

  • 找到另一个支持no_std并具有类似功能的板条箱:https ://crates.io/keywords/no_std
  • 更新/编写一个板条箱来支持no_std(根据板条箱的不同,这可能不会那么糟糕)。