我弄不明白为什么这段铁 rust 代码会导致堆栈溢出.
enum SlidingAttackTable {
Rook([[u64; 4096]; 64]),
Bishop([[u64; 512]; 64]),
}
fn init_all() -> (SlidingAttackTable, SlidingAttackTable, [u64; 64], [u64; 64], [usize; 64]) {
return (SlidingAttackTable::Bishop([[0; 512]; 64]), SlidingAttackTable::Rook([[0; 4096]; 64]), [0; 64], [0; 64], [0; 64]);
}
fn main() {
println!("start");
let (bishop_attack_table, rook_attack_table, bishop_masks, bishop_magic_numbers, bishop_relevant_bits) = init_all();
}
我试着注释掉除println!("start")
之外的所有内容,结果打印出"Start",没有任何错误.不知何故,当我只添加这几行代码时,它甚至在到达该行并打印"Start"之前就崩溃了.这里没有我可以检测到的循环或递归,所以我不知道如何开始诊断这个问题.