Ownership et emprunt

Rust Slices: &str and &[T]

Borrow part of a string or array without copying a single byte.

  • Intermédiaire
  • 2 min de lecture
  • 1 exemple exécutable
Ce que vous allez apprendre
  • String slices
  • Array slices
  • Returning a slice
&numbers[1..4]
100
201
302
403
504
The slice covers indexes 1, 2 and 3.

A view of part of a collection

A slice is a reference to a continuous part of a collection. &text[0..5] borrows the first five bytes of a string, and &numbers[1..4] borrows three items of an array.

first_word returns a slice of the text it was given, so nothing is copied. find returns the position of the first space, or None when there is none. A slice of an array works the same way and has methods such as iter and len.

Points clés

  1. &text[0..5] borrows the first five bytes.
  2. A slice does not copy the data.
  3. &numbers[1..4] has three items.

Exemple Rust exécutable

Rust
Exécuter le code →
main.rs
fn first_word(text: &str) -> &str {
    match text.find(' ') {
        Some(index) => &text[..index],
        None => text,
    }
}

fn main() {
    let sentence = String::from("ownership makes Rust safe");
    println!("{}", first_word(&sentence));
    println!("{}", &sentence[10..15]);

    let numbers = [10, 20, 30, 40, 50];
    let middle = &numbers[1..4];
    println!("{:?} sum = {}", middle, middle.iter().sum::<i32>());
}
Obtenir un bouton Run pour cet exemple Résultat de l'exécution
ownership
makes
[20, 30, 40] sum = 90

S'entraîner

Ouvrez l'exemple dans le compilateur en ligne, modifiez une valeur ou ajoutez une ligne, et devinez la sortie avant de l'exécuter. Cassez ensuite le code exprès et lisez le message du compilateur.

Leçon terminée ?

Marquez-la comme apprise pour suivre votre progression.

Suivante : Lifetimes →

S'entraîner avec un défi

Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.

Tous les défis