所有権と借用

Rust Slices: &str and &[T]

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

  • 中級
  • 約2分で読めます
  • 実行できるサンプル 1 件
学べること
  • 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.

重要なポイント

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

実行できる Rust のサンプル

Rust
コードを実行 →
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>());
}
この例の実行ボタンを作成 実行結果
ownership
makes
[20, 30, 40] sum = 90

練習

サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。

このレッスンを終えましたか?

学習済みにすると進み具合を記録できます。

次へ: Lifetimes →

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ