Владение строками Rust: подробное руководство с примерами

“Владение строками в Rust”

Rust имеет уникальную систему владения, которая обеспечивает безопасность памяти и устраняет распространенные ошибки, такие как разыменование нулевого указателя и гонки данных. Когда дело доходит до строк, модель владения Rust обеспечивает эффективную и безопасную обработку строк. Вот несколько методов работы со строками в Rust, а также примеры кода:

  1. Создание строки:
    Чтобы создать новую строку, вы можете использовать функцию String::fromили просто присвоить строковый литерал Stringпеременная.

    let s1 = String::from("Hello, world!");
    let s2: String = "Hello, Rust!".to_string();
  2. Объединение строк.
    Вы можете объединить две строки с помощью оператора +или метода String::push_str.

    let s1 = String::from("Hello");
    let s2 = String::from(" Rust!");
    let s3 = s1 + &s2;
  3. Присоединение к строке:
    Метод String::pushпозволяет добавлять к строке один символ, а String::push_strдобавляет целую строку.

    let mut s = String::from("Hello");
    s.push(' ');
    s.push_str("Rust!");
  4. Длина строки:
    Чтобы получить длину строки, вы можете использовать метод String::len.

    let s = String::from("Hello, Rust!");
    let len = s.len();
  5. Разрез строки.
    Вы можете получить фрагмент строки с помощью оператора &или метода String::get.

    let s = String::from("Hello, Rust!");
    let slice = &s[0..5];
  6. Итерация строки.
    Вы можете перебирать символы строки, используя метод chars.

    let s = String::from("Hello, Rust!");
    for c in s.chars() {
       println!("{}", c);
    }
  7. Преобразование строк:
    Rust предоставляет методы для преобразования строки в массив байтов (String::into_bytes) и наоборот (String::from_utf8).

    let s = String::from("Hello, Rust!");
    let bytes = s.into_bytes();
    let new_s = String::from_utf8(bytes).unwrap();
  8. Сравнение строк.
    Вы можете сравнить две строки с помощью оператора ==или метода String::eq.

    let s1 = String::from("Hello, Rust!");
    let s2 = String::from("Hello, Rust!");
    if s1 == s2 {
       println!("Strings are equal!");
    }