Skip to content

values does not live long enough when calling as_slice() on a slice #15357

@arjantop

Description

@arjantop

From stackoverflow question

example:

fn test<'a>(s: &'a String) -> &'a str {
    let slice = s.as_slice();
    slice.as_slice()
}

error:

rpn_calc.rs:2:5: 2:17 error: borrowed value does not live long enough
rpn_calc.rs:2     s.as_slice().as_slice()
                  ^~~~~~~~~~~~
rpn_calc.rs:1:39: 3:2 note: reference must be valid for the lifetime 'a as defined on the block at 1:38...
rpn_calc.rs:1 fn test<'a>(s: &'a String) -> &'a str {
rpn_calc.rs:2     s.as_slice().as_slice()
rpn_calc.rs:3 }
rpn_calc.rs:1:39: 3:2 note: ...but borrowed value is only valid for the block at 1:38
rpn_calc.rs:1 fn test<'a>(s: &'a String) -> &'a str {
rpn_calc.rs:2     s.as_slice().as_slice()
rpn_calc.rs:3 }
error: aborting due to previous error

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-lifetimesArea: Lifetimes / regions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions