У меня есть следующий код:
extern crate rand;
use rand::{thread_rng, Rng};
fn main() {
let mut vec: Vec<u32> = (0..10).collect();
let mut slice: &[u32] = vec.as_mut_slice();
thread_rng().shuffle(slice);
}
и получите следующую ошибку:
error[E0308]: mismatched types
--> src/main.rs:9:26
|
9 | thread_rng().shuffle(slice);
| ^^^^^ types differ in mutability
|
= note: expected type '&mut [_]'
found type '&[u32]'
Я думаю, что я понимаю, что содержание векторов и срезов является неизменным, и это вызывает ошибку здесь, но я не уверен.
Подпись as_mut_slice
- pub fn as_mut_slice<'a>(&'a mut self) → &'a mut [T]
, поэтому срез должен быть изменяемым, но это как-то не так.
Я знаю, что это должно быть легко исправить, но я старался изо всех сил и не мог заставить его работать.