Rust Functions
Functions are reusable blocks of code used to perform a specific task.
Functions help make programs:
- Cleaner
- Reusable
- Easy to understand
- Easy to maintain
In Rust, the main() function is the starting point of every program.
Basic Function Syntax
Functions are created using the fn keyword.
Syntax
fn function_name() {
// code
}
Example
fn greet() {
println!("Welcome to Rust!");
}
fn main() {
greet();
}
Output
Welcome to Rust!
Function Parameters
Functions can accept values called parameters.
Parameters are written inside parentheses.
Example
fn greet(name: &str) {
println!("Hello, {}", name);
}
fn main() {
greet("Hemlata");
}
Output
Hello, Hemlata
Multiple Parameters
A function can have multiple parameters.
Example
fn add(a: i32, b: i32) {
println!("Sum: {}", a + b);
}
fn main() {
add(10, 20);
}
Output
Sum: 30
Function Return Values
Functions can return values using the return type syntax ->.
Example
fn square(num: i32) -> i32 {
num * num
}
fn main() {
let result = square(5);
println!("Square: {}", result);
}
Output
Square: 25
In Rust, the last expression without a semicolon is automatically returned.
Using the return Keyword
Rust also allows returning values using the return keyword.
Example
fn multiply(a: i32, b: i32) -> i32 {
return a * b;
}
fn main() {
let result = multiply(4, 5);
println!("Result: {}", result);
}
Output
Result: 20
Functions Without Return Value
Functions that do not return anything have a return type of () called the unit type.
Example
fn message() {
println!("This function returns nothing.");
}
fn main() {
message();
}
Function with Boolean Return Type
Functions can also return boolean values.
Example
fn is_even(num: i32) -> bool {
num % 2 == 0
}
fn main() {
println!("{}", is_even(10));
println!("{}", is_even(7));
}
Output
true
false
Calling Functions Multiple Times
Functions can be reused multiple times in a program.
Example
fn greet() {
println!("Hello from Rust!");
}
fn main() {
greet();
greet();
greet();
}
Output
Hello from Rust!
Hello from Rust!
Hello from Rust!
Function Expressions
The last line of a function can act as an expression.
Example
fn sum(a: i32, b: i32) -> i32 {
a + b
}
fn main() {
let result = sum(3, 7);
println!("{}", result);
}
Output
10
Nested Function Calls
One function can call another function.
Example
fn display() {
println!("Display Function");
}
fn show() {
display();
println!("Show Function");
}
fn main() {
show();
}
Output
Display Function
Show Function
Function Ownership Example
Rust follows ownership rules even in functions.
Example
fn print_text(text: String) {
println!("{}", text);
}
fn main() {
let message = String::from("Rust");
print_text(message);
}
After passing message, ownership moves to the function.
Mutable Parameters Example
Functions can work with mutable values.
Example
fn main() {
let mut number = 10;
increase(&mut number);
println!("{}", number);
}
fn increase(num: &mut i32) {
*num += 1;
}
Output
11
Advantages of Functions
Functions provide many benefits:
- Code reusability
- Better readability
- Easier debugging
- Organized programs
- Reduced code duplication
Summary
Functions are one of the most important parts of Rust programming.
Important Points
- Functions are declared using
fn - Parameters allow passing values
- Functions can return values
- Rust supports expression-based returns
- Functions improve code organization and reusability
Functions help developers write clean, modular, and efficient Rust programs.