Playpen
Relevant code (note that DoesStuff is a trait):
implDerefforFoobar{typeTarget = DoesStuff;fnderef(&self) -> &Self::Target{matchself{&Foobar::Foo(ref e) => {let newref = e.clone();
newref as&DoesStuff// error here// newref as &Self::Target // just works..// newref // returning without `as` works (code below works too)}&Foobar::Bar(ref e) => e,}}}Error text:
<anon>:26:26:26:31 error: cannot infer an appropriate lifetime for pattern due to conflicting requirements [E0495]
<anon>:26&Foobar::Foo(ref e) => {
^~~~~
<anon>:27:30:27:39 note: first, the lifetime cannot outlive the method call at 27:29...
<anon>:27let newref = e.clone();
^~~~~~~~~
<anon>:27:30:27:31 note: ...so that method receiver is valid for the method call<anon>:27 let newref = e.clone();
^
<anon>:24:38:34:6 note: but, the lifetime must be valid for the anonymous lifetime #1 defined on the block at 24:37...
<anon>:24fn deref(&self) -> &Self::Target{
<anon>:25matchself{
<anon>:26&Foobar::Foo(ref e) => {
<anon>:27let newref = e.clone();
<anon>:28 newref as&DoesStuff// error here<anon>:29// newref as &Self::Target // just works..
...
<anon>:28:17:28:37 note: ...so that trait type parameters matches those specified on the impl (expected `core::ops::CoerceUnsized<&DoesStuff + 'static>`, found `core::ops::CoerceUnsized<&DoesStuff + 'static>`)
<anon>:28 newref as&DoesStuff// error here
^~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
playpen: application terminated with error code 101cc @mbrubeck since on the IRC you've told me that it's worthy filing an issue :)
Playpen
Relevant code (note that
DoesStuffis a trait):Error text:
cc @mbrubeck since on the IRC you've told me that it's worthy filing an issue :)