如何解决 Substrate `duplicate lang item in crate 'std' (which 'myexternalcrate' depends on): 'panic_impl' conflict with sr-io

How to solve Substrate `duplicate lang item in crate 'std' (which 'myexternalcrate' depends on): 'panic_impl' conflict with sr-io

我在我的 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).

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

我已经看到这个问题 here,它似乎已在 sr-io 中修复,但似乎不是此处的原因。

他们有另一种解决方法吗?

编辑:添加对 Cargo.toml 的更改 我们正在尝试拉入名为 nacl

的箱子
[dependencies]
nacl = {version = "0.3.0", default-features = false}

已添加到 lib.rs

extern crate nacl;

在运行时模块中

use nacl::public_box::*;

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

选项是:

  • 找到另一个支持 no_std 并具有类似功能的 crate:https://crates.io/keywords/no_std
  • Update/Write 一个支持 no_std 的箱子(根据箱子的不同可能不会那么糟糕)。