Виділення підрядків

Rust:
Виділення підрядків

Як це зробити:

fn main() {
    let text = "Вітання з України!";
    let start = text.find('з').expect("Substring not found");
    let end = start + 'з'.len_utf8();
    let substring: &str = &text[start..end];

    println!("The substring is: {}", substring);
}

Вивід:

The substring is: з

Щоб витягти слово “України”, робимо так:

fn main() {
    let text = "Вітання з України!";
    let start = text.find('У').unwrap_or(0);
    let end = text.len();
    let substring = &text[start..end];

    println!("The substring is: {}", substring);
}

Вивід:

The substring is: України!

Глибоке занурення

Витягування підрядків у Rust відбувається через зрізи рядків, які беруть початковий і кінцевий індекси. Історично, Rust розвинувся з мови, що наголошує на безпеку пам’яті та паралелізм, тому він використовує сувору систему позицій для уникнення помилок, як-от “index out of bounds”.

Є альтернативні способи витягнення підрядків, наприклад, метод split для розділення рядка по роздільникам або регулярні вирази з крейта regex для більш складних шаблонів.

Деталі реалізації: витягування оперує Unicode скалярами, не байтами, що важливо для коректної обробки текстів, подібних до української мови з її специфічними символами. Невірно вираховані індекси можуть привести до panic за несподіваним збоєм в коді, отже краще користуватися методами find чи chars().nth() для безпечного доступу до певних символів.

Дивіться також: