Rust

Патерни проєктування Rust

Builder pattern, newtype, RAII, typestate, патерни обробки помилок, патерни внутрішньої мутабельності

20 питань зі співбесід·
Senior
1

Яка головна перевага патерну Builder у Rust порівняно з конструктором із багатьма параметрами?

Відповідь

Патерн Builder забезпечує читабельну та гнучку конструкцію об'єктів шляхом ланцюжкового виклику плавних методів. У Rust він уникає помилок, пов'язаних із порядком параметрів, дозволяє значення за замовчуванням і робить код самодокументованим. На відміну від конструктора з багатьма позиційними аргументами, Builder робить кожне поле явним через ім'я свого методу.

2

Яку проблему вирішує загортання примітивного типу в tuple struct у патерні Newtype?

Відповідь

Патерн Newtype створює окремий тип на рівні системи типів, запобігаючи плутанині між семантично різними значеннями з однаковим базовим типом. Наприклад, UserId(u64) і ProductId(u64) несумісні під час compile-time, що уникає багів, коли ID продукту передавався б там, де очікується ID користувача. Цей патерн має нульову вартість під час runtime завдяки гарантії ідентичного представлення в пам'яті.

3

Як патерн RAII гарантує звільнення ресурсів у Rust?

Відповідь

RAII (Resource Acquisition Is Initialization) пов'язує життєвий цикл ресурсу зі scope змінної. У Rust trait Drop викликається автоматично, коли значення виходить за межі scope, що гарантує детерміноване звільнення ресурсів без garbage collector. Цей патерн є фундаментальним для файлів, мережевих з'єднань, lock та будь-якого ресурсу, що потребує явного очищення.

4

Який принцип патерну Typestate для кодування станів об'єкта в системі типів?

5

Який патерн обробки помилок рекомендується для поширення помилок з додатковим контекстом?

+17 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно