Yep, you are right. I think this is going to need #7331 fixed to work for you.
On Fri, Jul 26, 2013 at 10:28 AM, David Renshaw <[email protected]> wrote: > I don't think that workaround helps in my case. The next thing I want > is a struct: > > struct SegmentReader<'self> { data : &'self [u8] } > > which implements `Constructable`. None of the following compile > successfully: > > > impl <'self> Constructable for SegmentReader<'self> { > fn construct(v : &'self [u8]) -> SegmentReader<'self> { > SegmentReader { data : v } > } > } > > > impl <'self> Constructable for SegmentReader<'self> { > fn construct<'self>(v : &'self [u8]) -> SegmentReader<'self> { > SegmentReader { data : v } > } > } > > > impl <'self> Constructable for SegmentReader<'self> { > fn construct<'a>(v : &'a [u8]) -> SegmentReader<'a> { > SegmentReader { data : v } > } > } > > > > On Fri, Jul 26, 2013 at 12:32 PM, Erick Tryzelaar > <[email protected]> wrote: > > ... and I just found a workaround for you: > > > > trait Constructable { fn construct<'a>(v : &'a [u8]) -> Self; } > > fn main() { } > > > > Compiles fine for me. > > > > > > > > On Fri, Jul 26, 2013 at 9:30 AM, Erick Tryzelaar < > [email protected]> > > wrote: > >> > >> David: That error seems pretty similar to this one > >> (https://github.com/mozilla/rust/issues/7331), so I added your code as > >> another example. > >> > >> > >> On Wed, Jul 24, 2013 at 4:26 PM, David Renshaw <[email protected]> > >> wrote: > >>> > >>> Looks like it's broken at the moment. If I try to compile this program: > >>> > >>> trait Constructable<'self> { fn construct(v : &'self[u8]) -> Self; } > >>> fn main() { } > >>> > >>> I get this error: > >>> > >>> error: internal compiler error: ty::Region#subst(): Reference to self > >>> region when given substs with no self region: substs(self_r=None, > >>> self_ty=Some(BUG[0]), tps=[]) > >>> > >>> On Wed, Jul 24, 2013 at 9:09 AM, Niko Matsakis <[email protected]> > wrote: > >>> > On Sun, Jul 21, 2013 at 12:44:24PM -0400, David Renshaw wrote: > >>> >> Hello everyone, > >>> >> > >>> >> I'm playing around with a Rust implementation for Cap'n Proto. Check > >>> >> it out: http://github.com/dwrensha/capnproto-rust . I welcome any > >>> >> comments or contributions. > >>> >> > >>> >> The reason I'm sharing this project with you now is I'd like to ask > >>> >> about a language feature missing from Rust that I feel may be > >>> >> hindering my progress. > >>> >> > >>> >> To the point, I want to be able define a trait like this: > >>> >> > >>> >> trait Constructable<'self> { > >>> >> fn construct<'a>(StructReader<'a>) -> Self<'a>; > >>> >> } > >>> > > >>> > I believe it would it be possible to define the trait like so: > >>> > > >>> > trait Constructable<'self> { > >>> > fn construct(StructReader<'self>) -> Self; > >>> > } > >>> > > >>> > > >>> > > >>> > regards, > >>> > > >>> > Niko > >>> _______________________________________________ > >>> Rust-dev mailing list > >>> [email protected] > >>> https://mail.mozilla.org/listinfo/rust-dev > >> > >> > > >
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
