w3resource

Rust Arrays and their Syntax, Examples, and Features


Exploring Arrays in Rust Programming

Introduction

Arrays in Rust are a fixed-size, collection data type that stores multiple elements of the same type. Arrays are efficient and provide constant-time access to elements by their index. Rust arrays are strongly typed and memory-safe, ensuring no out-of-bound access.


Syntax

let array_name: [type; size] = [value1, value2, ..., valueN];

Explanation:

  • type: Data type of the elements (e.g., i32, f64).
  • size: Fixed number of elements the array can hold.
  • Example:
  • Code:

    
    let numbers: [i32; 4] = [1, 2, 3, 4];
    

Examples and Explanations

1. Declaring and Initializing an Array

Code:

fn main() {
    // Declare an array of integers
    let numbers: [i32; 5] = [10, 20, 30, 40, 50];
    
    // Print the entire array
    println!("Array: {:?}", numbers);
    
    // Access elements by index
    println!("First Element: {}", numbers[0]); // Output: 10
    println!("Last Element: {}", numbers[4]); // Output: 50
}

Explanation:

  • The array numbers is of type i32 and can hold exactly 5 elements.
  • The println! macro with {:?} prints the array in debug format.

2. Default Initialization

Code:

fn main() {
    // Create an array of 5 elements, all initialized to 1
    let default_array: [i32; 5] = [1; 5];

    println!("Default Array: {:?}", default_array); // Output: [1, 1, 1, 1, 1]
}

Explanation:

  • The [value; size] syntax initializes all elements of the array to the specified value.

3. Iterating Through an Array

Code:

fn main() {
    let fruits = ["Apple", "Banana", "Cherry", "Date"];
    
    // Iterate using a for loop
    for fruit in fruits.iter() {
        println!("Fruit: {}", fruit);
    }
}

Explanation:

  • The .iter() method creates an iterator for the array, allowing iteration over its elements.

4. Working with Indexes

Code:

fn main() {
    let numbers = [10, 20, 30, 40, 50];
    
    // Use enumerate to access both index and value
    for (index, value) in numbers.iter().enumerate() {
        println!("Index: {}, Value: {}", index, value);
    }
}

Explanation:

  • The .enumerate() method returns both the index and value during iteration.

5. Multidimensional Arrays

Code:

fn main() {
    // Declare a 2D array
    let matrix: [[i32; 3]; 2] = [
        [1, 2, 3], // First row
        [4, 5, 6], // Second row
    ];

    // Access an element
    println!("Element at [1][2]: {}", matrix[1][2]); // Output: 6
}

Explanation:

  • A 2D array is declared with [type; columns]; rows.
  • Elements are accessed using matrix[row][column].

6. Arrays and Slices

Code:

fn main() {
    let numbers = [1, 2, 3, 4, 5];

    // Borrow a slice of the array
    let slice = &numbers[1..4];

    println!("Slice: {:?}", slice); // Output: [2, 3, 4]
}

Explanation:

  • Slices are views into an array and allow borrowing a part of the array without copying it.
  • Syntax [start..end] selects elements from start to end-1.

Array Characteristics in Rust

    1. Fixed Size: Arrays have a constant size defined at compile time.

    2. Strongly Typed: All elements must be of the same type.

    3. Zero-based Indexing: Indexing starts from 0.

    4. Memory Safety: Rust prevents accessing indices outside the array bounds.


Common Operations

1. Length of an Array:

Code:

fn main() {
    let numbers = [1, 2, 3];
    println!("Length: {}", numbers.len()); // Output: 3
}

2. Out-of-Bounds Access:

Code:

fn main() {
    let numbers = [1, 2, 3];
    // Uncommenting the line below will cause a compile-time panic
    // println!("{}", numbers[5]);
}

Advantages of Arrays in Rust

    1. Efficiency: Arrays have a fixed size, making memory allocation straightforward.

    2. Predictability: Compile-time size checking ensures safety.

    3. Ease of Use: Arrays integrate seamlessly with Rust’s iteration and slicing features.


Summary:

Arrays in Rust are a foundational data structure, ideal for scenarios where you need fixed-size collections. With features like slices, iteration, and memory safety, Rust arrays are versatile and efficient for handling data in a structured way.

Rust Language Questions, Answers, and Code Snippets Collection.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/rust-tutorial/rust-arrays-guide-examples-usage.php