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]) { // Your code here: iterate over the mutable slice and modify its elements. for element in slice { 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 v in slice.iter_mut() { if (*v & 0b1) > 0 { // ODd *v -= 1; } else { // even *v *= 2; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for elem in slice { if *elem % 2 == 0 { *elem = *elem * 2; } else { *elem -= 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 = *x * 2 } else { *x = *x - 1 } });}
pub fn transform_even_odd(slice: &mut [i32]) { for val in slice.iter_mut() { if *val % 2 == 0 { *val = *val * 2; } else { *val = *val - 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 elem in slice.iter_mut() { if *elem % 2 == 0 { *elem *= 2; } else { *elem -= 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]) { slice.iter_mut().for_each(|item| { 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 v in slice.iter_mut() { if *v % 2 == 0 { *v = (*v) * 2; } else { *v = *v - 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; } else { *v -= 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 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 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 el in slice.iter_mut() { if *el % 2 == 0 { *el *= 2; } else { *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 = *num * 2; } else { *num = *num - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for num in slice.iter_mut() { if *num % 2 == 0 { *num = *num * 2; // Increment even numbers } else { *num -= 1; // Decrement odd numbers } }}
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]) { // Your code here: iterate over the mutable slice and modify its elements. slice.iter_mut().for_each(|x| { match *x % 2 { 0 => *x*=2, _ => *x-=1 } });}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for elm in slice.iter_mut() { if *elm % 2 != 0 { *elm -= 1 } else { *elm *= 2 } }}
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() { match *num % 2_i32 { 0 => { *num = *num * 2 } _ => { *num = *num - 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 { 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 e in slice { 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 num in slice{ if *num % 2 == 0 { *num *= 2; } else{ *num -=1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { slice.iter_mut().for_each(|s| if *s % 2 == 0 {*s *= 2} else {*s -= 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(|elem| { if *elem % 2 == 0 { *elem *= 2; } else { *elem -= 1; }; })}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for elem in slice.iter_mut() { if *elem % 2 == 0 { *elem *= 2; continue; }; *elem -= 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 } }} // for item in slice { // if *item % 2 == 0 { // *item *= 2; // } else { // *item -= 1; // } // for i in 0..slice.len(){ // if slice[i] % 2 != 0{ // slice[i] = slice[i] -1; // }else{ // slice[i] = 2 * slice[i]; // }
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 item in slice { if *item % 2 == 0 { *item *= 2; } else { *item -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in 0..slice.len(){ if slice[i] % 2 != 0{ slice[i] = slice[i] -1; }else{ slice[i] = 2 * slice[i]; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for element in slice { let is_odd_or_even = (*element).abs() % 2; // for Odd Elements if is_odd_or_even == 1 { *element -= 1; // for Even Elements } else if is_odd_or_even == 0 { *element *= 2; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for el in slice.iter_mut() { if *el % 2 == 0 { *el *= 2; } else { *el -= 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 i in 0..slice.len(){ if slice[i] % 2 != 0{ slice[i] = slice[i] -1; }else{ slice[i] = 2 * slice[i]; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for i in 0..slice.len(){ if slice[i] % 2 != 0{ slice[i] = slice[i] -1; }else{ slice[i] = 2 * slice[i]; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for piece in slice.iter_mut() { if *piece % 2 == 0 { *piece *= 2; } else { *piece -= 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 { if *v % 2 == 0 { *v = *v * 2; } else { *v = *v - 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]) { 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 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 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 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(|num| { if *num % 2 == 0 { *num += *num } 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(|num| { if *num % 2 == 0 { *num += *num } else { *num -= 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 { 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 i in slice { let is_even: bool = *i % 2 == 0; *i = if is_even { *i * 2 } else { *i - 1}; }}
pub fn transform_even_odd(slice: &mut [i32]) { for s in slice { if *s % 2 == 0 { *s *= 2; } else { *s -= 1; } } // Your code here: iterate over the mutable slice and modify its elements.}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for item in slice { *item = if *item % 2 == 0 { *item * 2 } else { *item - 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for nb in slice.iter_mut() { if *nb % 2 == 0 { *nb *= 2; } else { *nb -= 1; } }}