假设我有以下变量:
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))
等)定义一个特质实现。
是否存在另一种“自动”定义此特征的方式(例如使用某种宏)?
答案 0 :(得分:3)
您的论点有误。它应该是n.shuffle(&mut rng)
。 RandCore
是rng的特征,而不是要改组的值。然后,如果使用SliceRandom
,则应该为所有切片实现。