Declaring and manipulating variables in programming is a fundamental concept that allows you to store and modify data. Variables in Rust are immutable by default, but you can make them mutable using the mut
keyword.
In this challenge, you will declare and use mutable variables in Rust. You will be given a function where you need to declare variables, modify their values, and perform specific operations.
text
with any initial value of type String
Use let mut
to make it mutable.text
to something else of your choice.mutates_value(&mut text)
function, which will change the value of your text
variable.If you're stuck, feel free to check out the hints below
Use the let mut
keyword to declare a mutable variable.
To give the value to as a mutable reference use the &mut
keyword. e.g.
To create a String
from a &str
, use String::from(value)
or value.to_string()
. e.g.
To return a value from a function, either use the return
statement or let the last expression be the return value. For example:
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String println!("{}", text); text.to_string() }// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = String::from("Olá"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text as String}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text = String::from("hello"); mutates_value(&mut text); return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text : String = String::from("hello"); mutates_value(&mut text); text }// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text.to_string();}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text.to_string();}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text = String::from("hello"); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text.to_string()}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String String::from(text)}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text.to_string()}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text = String::from("hello"); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); mutates_value(&mut text); text // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { let mut text: String = String::from("hello"); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = String::from("hello"); // 2. Reassign the value of `text` to a new value mutates_value(&mut text); // 3. Return the value of `text` text}pub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text: &str = "hello"; let mut text: String = text.to_string(); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_owned(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text.to_owned()}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text: String = String::from("hey"); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { let mut text = "hello".to_string(); mutates_value(&mut text); return text; // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = "hello".into(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text.to_string()}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" // 2. Call `mutates_value` with a mutable reference to `text` // 3. Return the value of `text` as a String let mut text: String = String::from("hello"); mutates_value(&mut text); text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); text // 3. Return the value of `text` as a String}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { let mut text = String::from("hello"); mutates_value(&mut text); text.to_string()}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String text}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text: String = "hello".to_string(); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}
pub fn mutating_variables() -> String { // 1. Declare a mutable variable `text` with value "hello" let mut text = String::from("hello"); // 2. Call `mutates_value` with a mutable reference to `text` mutates_value(&mut text); // 3. Return the value of `text` as a String return text;}// Do not change this functionpub fn mutates_value(value: &mut String) { *value = String::from("bye")}