Skip to content

A cloned slice can escape the scope where it is valid. #19634

@shepmaster

Description

@shepmaster

This code compiles successfully, but doesn't seem like it should:

fn main() {
    let mut view;

    {
        let array2 = vec![4i, 5, 6];
        view = array2.as_slice().clone();
    }

    // Do not expect view to be valid here. Removing `clone` above makes this an error.

    println!("{}", view);
}

Version:

$ rustc --version=verbose
rustc 0.13.0-dev (358db12a8 2014-12-06 17:42:16 +0000)
binary: rustc
commit-hash: 358db12a89d6edf4a61cb3c8d170449faea925cc
commit-date: 2014-12-06 17:42:16 +0000
host: x86_64-apple-darwin
release: 0.13.0-dev

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions