Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Rust: borrowing, lifetime, struct

Как использовать заимствование данных в структуре Rust?

Вопрос помогает понять, как безопасно ссылаться на внешние данные в структуре, используя систему времён жизни (lifetime).

Короткий ответ

Чтобы структура могла заимствовать данные, используются аннотации времён жизни ('a). Они гарантируют, что заимствованные данные существуют до тех пор, пока существует структура.

Длинный ответ

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

Пример структуры с заимствованием:

#[derive(Debug)]
struct Name<'a> {
    	name: &'a str,
}

let name = String::from("Bob");
let n = Name { name: &name };
println!("{:?}", n);

Как это работает:

  • 'a — это аннотация времени жизни.

  • Она указывает, что ссылка внутри структуры должна жить как минимум столько же, сколько и сама структура.

  • Компилятор проверяет, чтобы ссылка не указывала на недействительные данные.

Когда использовать:

  • Когда структура не должна владеть данными, а только ссылаться на них.

  • Для оптимизации памяти, избегая копирования данных.

Заимствование с аннотацией времён жизни делает код безопасным, но требует тщательного проектирования.

  • Аватар

    Rust Guru

    Eduard Paul

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Rust

    Rust

Ключевые слова

#borrowing

#lifetime

#struct

Подпишись на Rust Developer в телеграм

  • Аватар

    Rust Guru

    Eduard Paul

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.