Rust trait object's &self cannot be used in a trait default function
<p>Trying to override a trait cast problem, described <a href="https://stackoverflow.com/questions/26126683/how-to-match-trait-implementors">here</a>. Stuck at implementing the trait function which returns the enum instance with own implementation inside:</p>

<pre><code>//the "trait matcher" enum
enum Side&lt;'a&gt; {
    Good(&amp;'a GoodDude),
    Bad(&amp;'a BadDude),
}

//very general trait
trait Dude {
    fn who_am_i(&amp;self) -&gt; Side;
    fn do_useful_stuff(&amp;self);
}

//specific trait #1
trait GoodDude: Dude {
    fn who_am_i_inner(&amp;self) -&gt; Side {
        Side::Good(&amp;self)
    }

    fn save_the_world(&amp;self);
}

//specific trait #2
trait BadDude: Dude {
    fn who_am_i_inner(&amp;self) -&gt; Side {
        Side::Bad(&amp;self)
    }

    fn do_evil(&amp;self);
}
</code></pre>

<p>But for some reason the compilation of this part fails with <a href="https://doc.rust-lang.org/error-index.html#E0277" rel="nofollow">E0277</a>:</p>

<pre><code>trait GoodDude: Dude {        
    fn who_am_i_inner(&amp;self) -&gt; Side {
        Side::Good(&amp;self) //&amp;self should be &amp;GoodDude, but compiler says it is not...
    }

    fn save_the_world(&amp;self);
}
</code></pre>

<p>And results in:</p>

<pre><code>&lt;anon&gt;:16:20: 16:25 error: the trait `GoodDude` is not implemented for the type `&amp;Self` [E0277]
&lt;anon&gt;:16         Side::Good(&amp;self)
                             ^~~~~
&lt;anon&gt;:16:20: 16:25 help: see the detailed explanation for E0277
&lt;anon&gt;:16:20: 16:25 note: required for the cast to the object type `GoodDude`
</code></pre>

<p>Can this be worked out?</p>

<p>Full sample: <a href="https://play.rust-lang.org/?gist=8ae2384e401da76c16214c4a642ce8b4&amp;version=stable&amp;backtrace=0" rel="nofollow">https://play.rust-lang.org/?gist=8ae2384e401da76c16214c4a642ce8b4&amp;version=stable&amp;backtrace=0</a></p>