On 2014.09.11 21:26:16 +0200, Christophe Pedretti wrote:
> Hello,
> 
> with 0.11.0, this code was ok
> 
> pub struct Cursor<'a, 'b> {
> > pStmt : &'b Statement<'a>,
> > error : bool
> > }

You need a bound on the lifetime now, to guarantee that the reference(s)
with lifetime 'a contained in Statement<'a> are valid for at least as
long as the reference with lifetime 'b.

So the struct should now look like this:

pub struct Cursor<'a, 'b: 'a> {
    pStmt: &'a Statement<'b>,
    error: bool,
}

This is correctly handled now that RFC 49 [1] has been implemented.

The corresponding PR is #16453 [2] and it lists the relevant breaking changes.

Björn

[1] https://github.com/rust-lang/rfcs/pull/192
[2] https://github.com/rust-lang/rust/pull/16453

> 
> 
> now, with the nighly, i receive a
> 
> sql\connection.rs:50:1: 53:2 error: in type `&'b
> sql::connection::Statement<'a>`, reference has a longer lifetime than the
> data it references
> sql\connection.rs:50 pub struct Cursor<'a, 'b> {
> sql\connection.rs:51    pStmt : &'b Statement<'a>,
> sql\connection.rs:52    error : bool
> sql\connection.rs:53 }
> sql\connection.rs:50:1: 53:2 note: the pointer is valid for the lifetime 'b
> as defined on the struct at 50:0
> sql\connection.rs:50 pub struct Cursor<'a, 'b> {
> sql\connection.rs:51    pStmt : &'b Statement<'a>,
> sql\connection.rs:52    error : bool
> sql\connection.rs:53 }
> sql\connection.rs:50:1: 53:2 note: but the referenced data is only valid
> for the lifetime 'a as defined on the struct at 50:0
> sql\connection.rs:50 pub struct Cursor<'a, 'b> {
> sql\connection.rs:51    pStmt : &'b Statement<'a>,
> sql\connection.rs:52    error : bool
> sql\connection.rs:53 }
> error: aborting due to previous error
> 
> why this change ?

> _______________________________________________
> 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