title: Is it possible to implement methods on type aliases?
body: <p>Consider the following implementation:</p>
  
  <pre><code>pub struct BST {
      root: Link,
  }
  
  type Link = Option&lt;Box&lt;Node&gt;&gt;;
  
  struct Node {
      left: Link,
      elem: i32,
      right: Link,
  }
  
  impl Link { /* misc */ }
  
  impl BST { /* misc */ }
  </code></pre>
  
  <p>I keep getting the error:</p>
  
  <blockquote>
    <p>cannot define inherent <code>impl</code> for a type outside of the crate where the type is defined; define and implement a trait or new type instead</p>
  </blockquote>
  
  <p>I was able to find others <a href="https://github.com/rust-lang/rust/issues/9767" rel="noreferrer">had this same issue back in February</a>, but there was seemingly no solution at the time.</p>
  
  <p>Is there any fix or another way for me to implement my <code>Link</code> typedef in Rust?</p>