🦀 #Rust Tip: Трюк доступный начиная с Rust 2024 Edition
Вы можете чейнить `if let Some(...)` прямо в одном выражении — без вложенности и лишнего кода!
Пример:
#rust #juior #tip
Вы можете чейнить `if let Some(...)` прямо в одном выражении — без вложенности и лишнего кода!
Пример:
fn sum_first_two(nums: &[u8]) -> Option<u8> {
let mut iter = nums.iter();
if let Some(first) = iter.next()
&& let Some(second) = iter.next() {
first.checked_add(*second)
} else {
None
}
}
#rust #juior #tip
🔥35👍10❤5🥱2🥰1😡1
🦀 Rust совет: когда использовать &self, &mut self, self и mut self — на реальном примере
Этот сниппет отлично показывает разные модели владения при методах:
Коротко:
- &self → читаем
- &mut self → изменяем
- self → потребляем объект
- mut self → потребляем + модифицируем и возвращаем (удобно для fluent API)
Понимание этих четырёх форм - ключ к грамотной архитектуре в Rust.
#rust #tip #junior
@rust_code
Этот сниппет отлично показывает разные модели владения при методах:
// читает, не меняя
fn len(&self) -> usize { … }
// изменяет объект на месте
fn push(&mut self, b: u8) { … }
// забирает владение — после вызова исходный объект больше недоступен
fn into_vec(self) -> Vec<u8> { … }
// builder-стиль: забирает владение, внутри mut, возвращает обновлённый объект
fn with_extra(mut self, extra: Vec<u8>) -> Self { … }
Коротко:
- &self → читаем
- &mut self → изменяем
- self → потребляем объект
- mut self → потребляем + модифицируем и возвращаем (удобно для fluent API)
Понимание этих четырёх форм - ключ к грамотной архитектуре в Rust.
#rust #tip #junior
@rust_code
❤31👍18🔥8🥰1