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 函数,它只是想获取传递给它的列表的第一个值。
我一直在尝试使用 VS 代码对其进行调试rust-analyser
,但调试面板中的局部变量显示为重复 3 次,我不明白为什么会发生这种情况。
函数前的内存堆栈/堆/堆:
data: {1509, 1857, 1736, 1815, 1576}
进入函数后立即进行内存堆栈/堆/堆:
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
消失了。但是,坦率地说,我不明白为什么会导致问题。
此外,在执行 lineprintln!("Output_1: {:?}", data_set.get(0));
时,值变得随机且极端,将内存堆栈/堆更改为
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}
有人可以解释为什么会这样吗?
如果有人能提出一个更好的标题也很好,因为我不知道如何描述这个问题。