rust - 如何从 console 上的 Rust 函数查看正在运行的 output?

我在 Rust 中有一个函数,它从给定需要组合的位数(nCk)的集合中返回可能的组合数量的向量向量。

如果集合是 [1,2,3] 并且位数(k)是 2,则 output 是:

[[1, 2], [1, 3], [2, 3]]

但是,如果我选择 k 是一个很大的数字,它会花费太多时间并在完成处理后立即打印所有 output 。

有没有可能它一直让我在旅途中运行 output ?

在 Java 中,我有同样的东西,它让我运行 output。

这是我的功能:

fn comb<T>(slice: &[T], k: usize) -> Vec<Vec<T>>
    where
        T: Copy,
{
    
    if k == 1 {
        return slice.iter().map(|x| vec![*x]).collect::<Vec<Vec<T>>>();
    }

    if k == slice.len() {
        return vec![slice.to_vec()];
    }

    let mut result = comb(&slice[1..], k - 1)
        .into_iter()
        .map(|x| [&slice[..1], x.as_slice()].concat())
        .collect::<Vec<Vec<T>>>();

    result.extend(comb(&slice[1..], k));
    
    return result;
}

回答1

我解决了这个问题。

没有运行 output 因为函数本身没有 print 语句,尽管它在 main 函数中。在函数本身中添加打印语句解决了问题:]

let mut result = comb(&slice[1..], k - 1)
        .into_iter()
        .map(|x| {
               let output = [&slice[..1], x.as_slice()].concat();
               println!("{:?}", output);
               output
         })
        .collect::<Vec<Vec<T>>>();

此外,您需要稍微更改签名:

T: Copy + Debug

T 现在也需要实现调试。

相似文章

随机推荐

最新文章