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 val in slice.iter_mut() { if *val % 2 == 0 { *val *= 2; } else { *val -= 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]) { for x in slice.iter_mut(){ if *x%2 == 0 { *x *= 2 }else{ *x -= 1 } }}
pub fn transform_even_odd(slice: &mut [i32]) { for i in slice.iter_mut() { if *i % 2 == 0 { *i *= 2; } else { *i -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { 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 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 elem in slice { 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; } 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(|e| { 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. slice.iter_mut().for_each(|e| { 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 i in slice.iter_mut(){ match *i{ n if (*i)%2 ==0 => *i = n*2, n => *i = n-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 { 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 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 value in slice { if *value % 2 == 0 { *value *= 2; } else { *value -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for itr in slice.iter_mut(){ if *itr % 2 == 0 { *itr = *itr *2 ; } else { *itr = *itr - 1 ; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for itr in slice.iter_mut(){ if *itr % 2 == 0 { *itr = *itr *2 ; } else { *itr = *itr - 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 *= 2; } else { *item -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for itm in slice.iter_mut() { if *itm % 2 == 0 { *itm = *itm * 2; } else { *itm = *itm - 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]) { 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]) { // Your code here: iterate over the mutable slice and modify its elements. for number in slice.iter_mut() { 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(){ match *i{ n if (*i)%2 ==0 => *i = n*2, n => *i = n-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(){ *i = if (*i)%2 == 0 { 2 * (*i) }else{ *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 { return *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 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]) { for i in slice.iter_mut() { *i = if *i % 2 == 0 { *i * 2} else { *i - 1}; } // Your code here: iterate over the mutable slice and modify its elements.}
pub fn transform_even_odd(slice: &mut [i32]) { for s in slice.iter_mut() { 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. 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. slice .iter_mut() .for_each( |num| { match *num % 2 { 0 => *num *= 2, _ => *num -= 1 } } );}
pub fn transform_even_odd(slice: &mut [i32]) { for num in slice.iter_mut() { if *num %2 == 0 { *num = *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.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 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 s in slice.iter_mut() { if *s % 2 == 0 { *s *= 2; }else { *s -= 1; } }}
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 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]) { for val in slice.iter_mut() { if *val % 2 == 0 { *val *= 2; } else { *val -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for i in 0..slice.len() { let value = slice[i]; if value % 2 == 0 { slice[i] = 2 * value; } else { slice[i] = value - 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { for val in slice.iter_mut() { if *val % 2 == 0 { *val *= 2; } else { *val -= 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]) { for val in slice.iter_mut() { if *val % 2 == 0 { *val *= 2; } else { *val -= 1; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. let slice_len = slice.len(); for i in 0..slice_len{ if slice[i] % 2 == 0{ let double = slice[i] * 2; slice[i] = double as i32; } else { let sub = slice[i] - 1; slice[i] = sub as i32; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. let slice_len = slice.len(); for index in 0..slice_len{ if slice[index] % 2 == 0 { let double = slice[index] * 2; slice[index] = double as i32; }else { let sub = slice[index] - 1; slice[index] = sub as i32; } }}
pub fn transform_even_odd(slice: &mut [i32]) { // Your code here: iterate over the mutable slice and modify its elements. for number in slice.iter_mut(){ if *number%2 == 0{ *number = *number * 2; } else{ *number = *number - 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 = *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. 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. for s in slice.iter_mut() { 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. for num in slice{ *num = match *num % 2{ 0 => *num * 2, _ => *num - 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; } else { *item = (*item) - 1; } }}