Задачи на ООП в Rust. Часть 3
Объясните, как сделать поля private через модуль mod employee { ... } и pub(crate).
Дан код в модуле:
pub struct BankAccount { balance: i32 }
Сделайте balance доступным только через методы deposit и withdraw.
Запретите прямое изменение salary снаружи модуля — только через set_salary.
Сделайте private helper-метод fn validate_age(age: u32) -> bool внутри модуля.
Сделайте public метод, вызывающий private helper.
Дан struct:
struct User { email: String }
Сделайте setter с проверкой наличия "@" в email.
Объясните разницу между pub, pub(crate) и private.
Сделайте struct с private полем и public constructor, проверяющим инварианты.
Сделайте метод age_mut(&mut self) -> &mut u32 — когда это уместно?
Создайте struct Wallet с приватным полем баланса и методами deposit, withdraw и balance.