Rust - 使用简单函数,调试器变量重复且随机?

Rust - With Simple Function, Debugger variables duplicated and random?

use std::fmt::Debug;
use std::ops::Add;

fn main() {
    fn calculate<T:Debug + Add::<Output=T>, const N: usize>(data_set: [T; N]) -> (i32, i32) {
        // Key Code 
        let _var = data_set.get(0);
        println!("Output_1: {:?}", data_set.get(0)); 

        // Ignore
        return (0, 0)
    }

    let data = [1509, 1857, 1736, 1815, 1576];
    let result = calculate(data);
    println!("Output_2: {:?}", result);
}

我有一个非常简单的 Rust 函数,它只是想获取传递给它的列表的第一个值。

我一直在尝试使用 rust-analyser 在 vs code 中调试它,但调试面板中的局部变量显示重复 3 次,我不明白为什么会这样。

函数前内存Stack/Pile/Heap:

data: {1509, 1857, 1736, 1815, 1576}

进入函数后立即内存Stack/Pile/Heap:

data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {1509, 1857, 1736, 1815, 1576}

我推断问题是由行 println!("Output_1: {:?}", data_set.get(0)); 引起的,因为通过删除它,重复的 data_set's 消失了。但是,坦率地说,我不明白为什么会导致这个问题。

此外,在执行行 println!("Output_1: {:?}", data_set.get(0)); 时,值变得随机和极端,将内存 stack/heap 更改为

data_set: {1509, 1857, 1736, 1815, 1576}
data_set: {-445645856, 223, -445645856, 223, -445645856} // numbers are different each execution.
data_set: {1509, 1857, 1736, 1815, 1576}

有人可以解释为什么会这样吗?

如果有人能建议一个更好的标题,那就太好了,因为我不知道如何描述这个问题。

问题:

这是最新版本1.6.9

中引入的LLDB Debugger bug

解法:

回滚到 1.6.8 或更早版本应该可以暂时解决问题。

修复:

我已在 github 此处 https://github.com/vadimcn/vscode-lldb/issues/584

向开发人员提出了这个问题