title: Rust traits on newtypes
body: <p>Let's say I have defined a <code>Group</code> trait with all the group operations. Would it be possible to create a wrapper <code>AGroup</code> over <code>Group</code> without having to manually derive all its operations?</p>
  <p>Basically, I'd like to have this:</p>
  <pre><code>#[derive (Copy, Debug, Clone, Eq, PartialEq, Group)] // How could I derive Group here as well?
  struct AGroup&lt;G: Group&gt;(G);
  </code></pre>
  <p>without all this boilerplate:</p>
  <pre><code>impl&lt;G: Group&gt; Add for AGroup&lt;G&gt;{
      type Output = AGroup&lt;G&gt;;
      fn add(self, other: Self) -&gt; Self {
          AGroup(self.0 + other.0)
      }
  }
  
  impl&lt;G: Group&gt; Neg for AGroup&lt;G&gt;{
      type Output = AGroup&lt;G&gt;;
      fn neg(self) -&gt; Self {
          AGroup(-self.0)
      }
  }
  ...
  </code></pre>