Rust

Wzorce projektowe w Rust

Builder pattern, newtype, RAII, typestate, wzorce obsługi błędów, wzorce interior mutability

20 pytań z rozmów·
Senior
1

Jaka jest główna zaleta wzorca Builder w Rust w porównaniu z konstruktorem o wielu parametrach?

Odpowiedź

Wzorzec Builder umożliwia czytelną i elastyczną konstrukcję obiektów poprzez łączenie płynnych metod. W Rust unika błędów związanych z kolejnością parametrów, pozwala na wartości domyślne i sprawia, że kod jest samodokumentujący. W przeciwieństwie do konstruktora z wieloma argumentami pozycyjnymi, Builder czyni każde pole jawnym poprzez nazwę swojej metody.

2

W jakim problemie pomaga opakowanie typu prymitywnego w tuple struct we wzorcu Newtype?

Odpowiedź

Wzorzec Newtype tworzy odrębny typ na poziomie systemu typów, zapobiegając pomyłkom między semantycznie różnymi wartościami o tym samym typie bazowym. Na przykład UserId(u64) i ProductId(u64) są niezgodne na etapie compile-time, co eliminuje błędy, w których ID produktu zostałoby przekazane tam, gdzie oczekiwane jest ID użytkownika. Ten wzorzec ma zerowy koszt w runtime dzięki gwarancji identycznej reprezentacji w pamięci.

3

W jaki sposób wzorzec RAII gwarantuje zwolnienie zasobów w Rust?

Odpowiedź

RAII (Resource Acquisition Is Initialization) wiąże cykl życia zasobu ze scope zmiennej. W Rust trait Drop jest wywoływany automatycznie, gdy wartość wychodzi poza scope, gwarantując deterministyczne zwolnienie zasobów bez garbage collectora. Ten wzorzec jest fundamentalny dla plików, połączeń sieciowych, locków i każdego zasobu wymagającego jawnego czyszczenia.

4

Jaka jest zasada wzorca Typestate do kodowania stanów obiektu w systemie typów?

5

Który wzorzec obsługi błędów jest zalecany do propagowania błędów z dodatkowym kontekstem?

+17 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo