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
<erick.tryzel...@gmail.com> 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 <erick.tryzel...@gmail.com>
> 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 <dwrens...@gmail.com>
>> 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 <n...@alum.mit.edu> 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
>>> Rust-dev@mozilla.org
>>> https://mail.mozilla.org/listinfo/rust-dev
>>
>>
>
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to