有没有一种方法可以在不实现RandCore特性的情况下改组元组?

时间:2020-08-13 20:18:15

标签: rust

假设我有以下变量:

let mut n: &[((usize, usize), (usize, usize))];

我想在此变量中混洗一些数据。我尝试过:

rng.shuffle(&mut n); // rng is of type rand::Rng

这当然会导致编译器错误,抱怨该特性未实现特征RandCore。我并不介意实现它,但是我讨厌必须为代码中的每种类型的变体(例如(usize, isize)((usize, isize), (usize, isize), (isize, usize))等)定义一个特质实现。

是否存在另一种“自动”定义此特征的方式(例如使用某种宏)?

1 个答案:

答案 0 :(得分:3)

您的论点有误。它应该是n.shuffle(&mut rng)RandCore是rng的特征,而不是要改组的值。然后,如果使用SliceRandom,则应该为所有切片实现。