title: How to solve Substrate `duplicate lang item in crate 'std' (which 'myexternalcrate' depends on): 'panic_impl' conflict with sr-io
body: <p>I'm using an extern crate in my Substrate 1.0 runtime module (based on <code>node-template</code>) which gives a compile error of </p>
  
  <pre class="lang-sh prettyprint-override"><code>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).
  </code></pre>
  
  <p>If I understand the message correctly then I think this might be a common problem if developers want to include external crates that rely on <code>std</code> features which already implemented in <code>sr-io</code>, but I'm not sure if that is correct.</p>
  
  <p>I have seen this issue <a href="https://github.com/paritytech/substrate/issues/2971" rel="noreferrer">here</a>, which appears to have been fixed in <code>sr-io</code> but that does not appear to be the cause here.</p>
  
  <p>Is their another approach to resolve this?</p>
  
  <p><strong>EDIT</strong>: Adding in changes to <code>Cargo.toml</code>
  We are attempting to pull in crate called nacl</p>
  
  <pre class="lang-sh prettyprint-override"><code>[dependencies]
  nacl = {version = "0.3.0", default-features = false}
  </code></pre>
  
  <p>Added in <code>lib.rs</code></p>
  
  <pre class="lang-rust prettyprint-override"><code>extern crate nacl;
  </code></pre>
  
  <p>in the runtime module</p>
  
  <pre class="lang-rust prettyprint-override"><code>use nacl::public_box::*;
  </code></pre>