In this challenge, you'll explore how to work with mutable slices in Rust. A mutable slice, &mut [T]
, allows you to modify the elements of a collection directly and efficiently without creating a new collection.
Slices are a fundamental part of Rust, providing a view into contiguous sequences of elements such as arrays or vectors. When working with slices, you can iterate over and manipulate the elements dynamically.
Write a function modify_elements(slice: &mut [i32])
that modifies the elements of a mutable slice of integers in the following way:
let mut numbers = [1, 2, 3, 4, 5];
modify_elements(&mut numbers);
// Odd numbers reduced by 1
// Even numbers doubled
assert_eq!(numbers, [0, 4, 2, 8, 4]);
let mut numbers = [10, 15, 20];
modify_elements(&mut numbers);
// 10 -> 20, 15 -> 14, 20 -> 40
assert_eq!(numbers, [20, 14, 40]);
If you're stuck, here are some hints to help you:
.iter_mut()
method to traverse the slice by mutable reference.num % 2 == 0
.*
) to update the value pointed to by the mutable reference.for
loop with mutable references for concise modification.pub fn transform_even_odd(slice: &mut [i32]) { for elem in slice { println!("{}", elem); match *elem % 2 { 0 => *elem *= 2, 1 | -1 => *elem -= 1, _ => unreachable!(), } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for x in slice.iter_mut(){ if *x % 2 == 0{ *x = *x * 2 } else { *x = *x - 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { for elem in slice.iter_mut(){ if *elem % 2 == 0 { *elem = *elem * 2; } else { *elem = *elem - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for item in slice.iter_mut() { if *item % 2 == 0 { *item = *item * 2; } else { *item = *item - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for item in slice.iter_mut() { if *item % 2 == 0 { *item = *item * 2; } else { *item = *item - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for x in slice.iter_mut() { if *x%2 == 0 { *x *= 2; } else { *x -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for x in slice.iter_mut() { if *x%2 == 0 { *x *= 2; } else { *x -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for item in slice.iter_mut() { if *item % 2 == 0 { *item = *item * 2; continue } else { *item -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for number in slice { if *number % 2 == 0 { *number *= 2; } else { *number -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice { if *i % 2 == 0 { *i *= 2; } else { *i -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for val in slice.iter_mut() { if *val % 2 == 0 { *val *= 2; // Multiply odd numbers by } else { *val -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for v in slice.iter_mut(){ if *v%2 == 0{ *v = 2**v } else { *v -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { slice.iter_mut().for_each(|x| { if *x % 2 == 0 { *x *= 2; } else { *x -= 1; } });}
pub fn transform_even_odd(slice: &mut [i32]) { for e in slice.iter_mut() { if *e % 2 == 0 { *e *= 2; } else { *e -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for s in slice.iter_mut() { if *s % 2 == 0 { *s = *s * 2; } else { *s = *s - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for n in slice.iter_mut() { *n = if *n % 2 == 0 { *n * 2 } else { *n - 1 }; }}
pub fn transform_even_odd(slice: &mut [i32]) { for i in slice.iter_mut() { if *i % 2 == 0 { *i = *i * 2; } else { *i = *i - 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for num in slice.iter_mut() { if *num % 2 == 0 { *num *= 2; } else { *num -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. slice.iter_mut().for_each(|el| { *el = match *el % 2 { 0 => *el * 2, _ => *el - 1, }; }); }
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for num in slice.iter_mut() { if *num % 2 == 0 { *num *= 2; } else { *num -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice.iter_mut() { if *i % 2 == 0 { *i = *i * 2; } else { *i = *i-1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for _num in slice.iter_mut() { if *_num % 2 == 0 { *_num = *_num * 2; } else { *_num = *_num - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for number in slice { if *number % 2 == 0 { *number *= 2; } else { *number -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice.iter_mut() { if *i % 2 == 0 { *i *= 2 }else { *i -= 1 }}}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for element in slice.iter_mut() { if *element % 2 == 0 { *element = *element * 2; } else { *element = *element - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice.iter_mut() { if *i % 2 == 0 { *i *= 2 } else { *i -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for n in slice.iter_mut() { if *n % 2 == 0 { *n *= 2 } else { *n -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for slice_num in slice.iter_mut() { if *slice_num % 2 != 0 { *slice_num -= 1 } else { *slice_num *= 2 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice { if *i % 2 == 0 { *i = *i * 2; } else { *i = *i - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for n in slice.iter_mut(){ if *n % 2 == 0 { *n *= 2 } else { *n -= 1 } }}//alternative solution/*for i in 0..slice.len() { if slice[i] % 2 == 0 { slice[i] *= 2; } else { slice[i] -= 1; } }*/
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for n in slice.iter_mut() { if *n % 2 == 0 { *n *= 2; } else { *n -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for x in slice.iter_mut() { if *x % 2 == 0 { *x *= 2 } else{ *x -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { for n in slice.iter_mut(){ if *n % 2 == 0 { *n *= 2 } else { *n -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. modify_elements(slice);}pub fn modify_elements (slice: &mut [i32]) { for i in slice.iter_mut(){ if *i % 2 == 0 { *i = *i * 2; } else { *i = *i - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for i in slice.iter_mut() { match *i%2 { 0 => *i *= 2, _ => *i -= 1, } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for element in slice.iter_mut() { if *element % 2 == 0 { *element *= 2; } else { *element -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice { if *i % 2 != 0 { *i -= 1; }else { *i *= 2; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice { if *i % 2 == 0 { *i = *i * 2; } else { *i = *i - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for num in slice.iter_mut() { if *num % 2 == 0 { *num *= 2; } else { *num -= 1; } }}pub fn main () { return }
pub fn transform_even_odd(slice: &mut [i32]) { for num in slice.iter_mut() { if *num % 2 == 0 { *num *= 2; } else { *num -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for element in slice.iter_mut() { if *element % 2 == 0 { *element *= 2; // Even numbers: double them } else { *element -= 1; // Odd numbers: subtract 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice.iter_mut() { if *i % 2 == 0 { *i = *i * 2; } if (*i % 2 == 1) || (*i % 2 == -1) { *i -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for num in slice.iter_mut() { if *num % 2 == 0 { *num *= 2 } else { *num -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { for n in slice.iter_mut() { if *n % 2 == 0 { *n *= 2; } else { *n -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for (i, pointer) in slice.iter_mut().enumerate() { if *pointer%2 == 0{ *pointer = *pointer * 2 } else { *pointer -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { for i in slice.iter_mut() { match *i % 2 { 0 => *i *= 2, _ => *i -= 1, } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. slice.iter_mut().for_each(|x| if *x%2 ==0 {*x *=2;} else{*x -=1;})}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in slice.iter_mut() { if *i % 2 == 0 { *i *= 2; } else { *i -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for num in slice.iter_mut(){ if *num % 2 == 0{ *num *= 2; }else{ *num -= 1; } } }
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate for num in slice.iter_mut(){ if *num % 2 != 0 { *num -= 1; }else{ *num *= 2; } } }