#Собес #chown #owner #group
🤔 Как изменить владельца файла в Bash?
💬 Кратко:
Чтобы изменить владельца файла, используйте:
Для смены владельца и группы:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как изменить владельца файла в Bash?
💬 Кратко:
Чтобы изменить владельца файла, используйте:
chown user file.txt
Для смены владельца и группы:
chown user:group file.txt
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🦀 Десериализация в Rust 🦀
Тоже производительная, как и все остальное в Rust. Все потому, что она zero-copy.
Рассмотрим подробнее🤨
При работе с большими JSON или бинарными данными традиционная десериализация создаёт копии строк и байтов. Это естественно расходует память.💀
Система владения в Rust позволяет использовать мощную оптимизацию: zero-copy десериализацию.
Проблема:
Решение:
Преимущества очевидны💡 :
• Производительность: Устраняем аллокации для строковых/байтовых полей
• Эффективность памяти: Ссылаемся на оригинальный буфер вместо копирования
• Низкие задержки: Критично для высоконагруженных сервисов
⚠️ Но всегда стоит помнить!
Заимствованные данные должны жить дольше вашей структуры. Десериализованный объект не может пережить исходный буфер.
В сочетании с
Был ли у вас опыт с zero-copy в Rust?🍷
🚀 Пост Guru Rust: @PaulEdd
Тоже производительная, как и все остальное в Rust. Все потому, что она zero-copy.
Рассмотрим подробнее
При работе с большими JSON или бинарными данными традиционная десериализация создаёт копии строк и байтов. Это естественно расходует память.
Система владения в Rust позволяет использовать мощную оптимизацию: zero-copy десериализацию.
Проблема:
// Обычная десериализация - создаёт owned String
#[derive(Deserialize)]
struct User {
name: String, // Выделяет новую память
email: String, // Ещё одна аллокация
}
// При парсинге JSON каждая строка копируется в кучу
let json = r#"{"name": "Иван", "email": "ivan@example.com"}"#;
let user: User = serde_json::from_str(json)?;
// Данные скопированы из json в user.name и user.email
Решение:
// Zero-copy с заимствованными данными
#[derive(Deserialize)]
struct User<'a> {
#[serde(borrow)]
name: &'a str, // Без аллокации!
#[serde(borrow)]
email: &'a str,
}
// Теперь данные НЕ копируются
let json = r#"{"name": "Иван", "email": "ivan@example.com"}"#;
let user: User = serde_json::from_str(json)?;
// user.name и user.email просто ссылаются на части json!
Преимущества очевидны
• Производительность: Устраняем аллокации для строковых/байтовых полей
• Эффективность памяти: Ссылаемся на оригинальный буфер вместо копирования
• Низкие задержки: Критично для высоконагруженных сервисов
Заимствованные данные должны жить дольше вашей структуры. Десериализованный объект не может пережить исходный буфер.
В сочетании с
simd-json или похожими библиотеками можно достичь времени парсинга на уровне микросекунд.Был ли у вас опыт с zero-copy в Rust?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3
#Собес #useradd #user #linux
🤔 Как добавить пользователя в Linux с помощью Bash?
💬 Кратко:
Чтобы добавить нового пользователя, используйте:
Затем задайте пароль:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как добавить пользователя в Linux с помощью Bash?
💬 Кратко:
Чтобы добавить нового пользователя, используйте:
useradd newuser
Затем задайте пароль:
passwd newuser
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #git_status
🤔 Что делает команда git status?
💬 Кратко:
Команда
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что делает команда git status?
💬 Кратко:
Команда
git status показывает текущее состояние репозитория. Она отображает информацию о файлах, которые были изменены, добавлены в индекс или остаются незамеченными. Это помогает понять, какие шаги нужно выполнить дальше.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#course #степик #sql
📚 Тренажер по SQL
Вам дается теория, примеры выполнения запросов, а дальше вы решаете разные задачи по теме (пример структуры на скрине)
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Тренажер по SQL
Вам дается теория, примеры выполнения запросов, а дальше вы решаете разные задачи по теме (пример структуры на скрине)
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #cp #copy #file
🤔 Как скопировать файлы в Bash?
💬 Кратко:
Чтобы скопировать файл, используйте команду
Для копирования папки используйте
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как скопировать файлы в Bash?
💬 Кратко:
Чтобы скопировать файл, используйте команду
cp:cp source_file destination_file
Для копирования папки используйте
-r:cp -r source_directory destination_directory
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🦀 СТАТИЧЕСКИЙ vs. ДИНАМИЧЕСКИЙ полиморфмизм 🦀
На собесах про это часто любят спрашивать. Давайте разберемся, в чем же разница между двумя этими понятиями.
В Rust есть два способа работать с трейтами - и они кардинально отличаются под капотом.🤑
Статический полиморфизм (с использованием дженериков)
Компилятор под капотом генерирует отдельную функцию для каждого типа. Это называется мономорфизацией.
Динамический полиморфизм (с использованием трейт-объектов)
Здесь компилятор создаёт одну функцию, а нужный метод ищется в рантайме через vtable (таблицу виртуальных методов).
Когда что использовать?🤨
Статический полиморфизм:
- Максимальная производительность. Никаких накладных расходов в рантайме
- Компилятор знает конкретный тип
- Но: раздувает бинарник (код дублируется для каждого типа)
Динамический полиморфизм:
- Больше гибкость. Можно хранить разные типы в одной коллекции
- Меньше размер бинарника
- Но: косвенный вызов через vtable (небольшой оверхед)
- Но: нельзя использовать с не-object-safe трейтами
Что чаще используете - дженерики или трейт-объекты?
🚀 Пост Guru Rust: @PaulEdd
На собесах про это часто любят спрашивать. Давайте разберемся, в чем же разница между двумя этими понятиями.
В Rust есть два способа работать с трейтами - и они кардинально отличаются под капотом.
Статический полиморфизм (с использованием дженериков)
trait Animal {
fn speak(&self);
}
struct Dog;
struct Cat;
impl Animal for Dog {
fn speak(&self) { println!("Гав!"); }
}
impl Animal for Cat {
fn speak(&self) { println!("Мяу!"); }
}
// Статический полиморфизм
fn make_speak<T: Animal>(animal: &T) {
animal.speak();
}Компилятор под капотом генерирует отдельную функцию для каждого типа. Это называется мономорфизацией.
// Компилятор создаёт две версии:
fn make_speak_Dog(animal: &Dog) { ... }
fn make_speak_Cat(animal: &Cat) { ... }
Динамический полиморфизм (с использованием трейт-объектов)
// Динамический полиморфизм
fn make_speak_dyn(animal: &dyn Animal) {
animal.speak();
}
// Можно хранить разные типы в одной коллекции!
let animals: Vec<Box<dyn Animal>> = vec![
Box::new(Dog),
Box::new(Cat),
];
for animal in &animals {
animal.speak();
}
Здесь компилятор создаёт одну функцию, а нужный метод ищется в рантайме через vtable (таблицу виртуальных методов).
Когда что использовать?
Статический полиморфизм:
- Максимальная производительность. Никаких накладных расходов в рантайме
- Компилятор знает конкретный тип
- Но: раздувает бинарник (код дублируется для каждого типа)
Динамический полиморфизм:
- Больше гибкость. Можно хранить разные типы в одной коллекции
- Меньше размер бинарника
- Но: косвенный вызов через vtable (небольшой оверхед)
- Но: нельзя использовать с не-object-safe трейтами
Что чаще используете - дженерики или трейт-объекты?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1
#Собес #memory_management #custom #allocators
🤔 Опиши сложные техники управления памятью в Rust, такие как пользовательские аллокаторы и внутренние указатели. Когда их необходимо использовать?
💬 Кратко:
Rust предоставляет автоматическое управление памятью, но для сложных задач можно использовать пользовательские аллокаторы (custom allocators) для оптимизации выделения памяти или внутренние указатели (interior pointers) для работы с небезопасной памятью. Пользовательские аллокаторы позволяют контролировать процесс выделения и освобождения памяти, что важно в высокопроизводительных или встроенных системах. Внутренние указатели используются для взаимодействия с внешними библиотеками или создания специализированных структур данных, но их использование требует осторожности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Опиши сложные техники управления памятью в Rust, такие как пользовательские аллокаторы и внутренние указатели. Когда их необходимо использовать?
💬 Кратко:
Rust предоставляет автоматическое управление памятью, но для сложных задач можно использовать пользовательские аллокаторы (custom allocators) для оптимизации выделения памяти или внутренние указатели (interior pointers) для работы с небезопасной памятью. Пользовательские аллокаторы позволяют контролировать процесс выделения и освобождения памяти, что важно в высокопроизводительных или встроенных системах. Внутренние указатели используются для взаимодействия с внешними библиотеками или создания специализированных структур данных, но их использование требует осторожности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
#Собес #merge #fast_forward #three_way
🤔 Что является результатом git merge?
💬 Кратко:
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что является результатом git merge?
💬 Кратко:
git merge объединяет две ветки: если изменения не пересекаются, создаёт fast‑forward (перемещает указатель ветки). При наличии расхождений — создаёт новый «merge‑коммит», объединяющий родительские ветки, сохраняя обе истории. Он позволяет сохранить информацию об объединении и точки ветвления.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #начинающие #продвинутые #rustbooks
📚 ImplFerris/LearnRust
Репозиторий с подборкой ресурсов для изучения Rust на разных уровнях — от новичка до продвинутого. Включает ссылки на книги (например, «The Rust Programming Language»), курсы, интерактивные туториалы (Rust By Example), видеоуроки и материалы по специфическим темам, таким как веб-разработка с Axum и embedded-программирование.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 ImplFerris/LearnRust
Репозиторий с подборкой ресурсов для изучения Rust на разных уровнях — от новичка до продвинутого. Включает ссылки на книги (например, «The Rust Programming Language»), курсы, интерактивные туториалы (Rust By Example), видеоуроки и материалы по специфическим темам, таким как веб-разработка с Axum и embedded-программирование.
Перейти к материалу
👉 База вопросов 👉 Новости
👍2
#Собес #perfoemance #object #dymamic
🤔 Каковы последствия для производительности при использовании объектов трейтов и динамической диспетчеризации в Rust?
💬 Кратко:
Использование объектов трейтов и динамической диспетчеризации приводит к дополнительным накладным расходам, так как они требуют индирекции через указатели и динамический вызов функций, что замедляет выполнение по сравнению с статическими типами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Каковы последствия для производительности при использовании объектов трейтов и динамической диспетчеризации в Rust?
💬 Кратко:
Использование объектов трейтов и динамической диспетчеризации приводит к дополнительным накладным расходам, так как они требуют индирекции через указатели и динамический вызов функций, что замедляет выполнение по сравнению с статическими типами.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #memory_management #custom #allocators
🤔 Опиши сложные техники управления памятью в Rust, такие как пользовательские аллокаторы и внутренние указатели. Когда их необходимо использовать?
💬 Кратко:
Rust предоставляет автоматическое управление памятью, но для сложных задач можно использовать пользовательские аллокаторы (custom allocators) для оптимизации выделения памяти или внутренние указатели (interior pointers) для работы с небезопасной памятью. Пользовательские аллокаторы позволяют контролировать процесс выделения и освобождения памяти, что важно в высокопроизводительных или встроенных системах. Внутренние указатели используются для взаимодействия с внешними библиотеками или создания специализированных структур данных, но их использование требует осторожности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Опиши сложные техники управления памятью в Rust, такие как пользовательские аллокаторы и внутренние указатели. Когда их необходимо использовать?
💬 Кратко:
Rust предоставляет автоматическое управление памятью, но для сложных задач можно использовать пользовательские аллокаторы (custom allocators) для оптимизации выделения памяти или внутренние указатели (interior pointers) для работы с небезопасной памятью. Пользовательские аллокаторы позволяют контролировать процесс выделения и освобождения памяти, что важно в высокопроизводительных или встроенных системах. Внутренние указатели используются для взаимодействия с внешними библиотеками или создания специализированных структур данных, но их использование требует осторожности.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #docker #entrypoint #caching
🤔 Какие типовые проблемы возникают при работе с Docker?
💬 Кратко:
Типичные проблемы — большие образы, утечки ресурсов, ошибки в Dockerfile, проблемы с кэшированием, конфликт портов, неправильная работа томов и зависимость от окружения. Также нередко возникают сложности с безопасностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие типовые проблемы возникают при работе с Docker?
💬 Кратко:
Типичные проблемы — большие образы, утечки ресурсов, ошибки в Dockerfile, проблемы с кэшированием, конфликт портов, неправильная работа томов и зависимость от окружения. Также нередко возникают сложности с безопасностью.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #kubernetes #clusterops #containermanagement
📚 Kubernetes
Основной репозиторий системы оркестрации контейнеров Kubernetes. Здесь можно изучить архитектуру, API, механизмы управления кластерами и принципы работы с контейнерами в распределённой среде. Полезен для понимания низкоуровневых механизмов Kubernetes, разбора паттернов развёртывания и настройки высокодоступных систем.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Kubernetes
Основной репозиторий системы оркестрации контейнеров Kubernetes. Здесь можно изучить архитектуру, API, механизмы управления кластерами и принципы работы с контейнерами в распределённой среде. Полезен для понимания низкоуровневых механизмов Kubernetes, разбора паттернов развёртывания и настройки высокодоступных систем.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #generics #associated_items #trait
🤔 Что такое расширенные обобщения с использованием ассоциированных элементов и where-ограничений, и как их применять для создания мощных абстракций?
💬 Кратко:
Расширенные обобщения позволяют создавать гибкие структуры и функции, которые работают с различными типами. Ассоциированные элементы обеспечивают дополнительные возможности для типов, реализующих трейт, а
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое расширенные обобщения с использованием ассоциированных элементов и where-ограничений, и как их применять для создания мощных абстракций?
💬 Кратко:
Расширенные обобщения позволяют создавать гибкие структуры и функции, которые работают с различными типами. Ассоциированные элементы обеспечивают дополнительные возможности для типов, реализующих трейт, а
where-ограничения упрощают добавление условий для типов. Это усиливает контроль и безопасность в коде.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🦀 ПРОФИЛИРОВАНИЕ 🦀
Как найти, что тормозит в программе?🧐
Интуиция нас часто обманывает. Кажется, что тормозит сложный алгоритм - а на деле проблема в лишних аллокациях или клонировании строк в цикле. Без конкретных измерений оптимизация превращается в лотерею: переписываешь код, который и так работал нормально, а реальное узкое место не трогаешь.
Профилирование позволяет посмотреть, какие участки кода тормозят или где в программе утечки памяти 🫥
Какие подходы существуют🤑
1. Семплирование - профилировщик периодически «фотографирует» стек вызовов. Если функция часто попадает в выборку, значит в ней тратится много времени.
Этот подход почти не замедляет программу.
2. Второй подход. В код вставляются метки, в которых замеряется точное время входа-выхода. Распространено, потому что легко сделать с помощью логов.
3. Микробенчмарки. Изолированный замер конкретной функции. Можно использовать, к примеру, для сравнения двух реализаций.
4. Профилирование памяти. Где и сколько аллокаций. В Rust утечки редки, но лишние аллокации тормозят.
Инструменты профилирования⛏
- perf + flamegraph - sampling-профилирование на Linux. Рисует наглядную картину: чем шире блок, тем больше времени в функции.
- criterion - микробенчмарки со статистикой. Сравниваешь две реализации и видишь, какая быстрее:
- tracing + tracy - для асинхронного кода. Показывает таймлайн: что выполнялось, что ждало, где блокировки.
- heaptrack / dhat - профилирование памяти. Находит, где программа просит память чаще всего.
Порядок действий🤔
1. Убедись, что проблема есть - может, код уже достаточно быстрый
2. Собери профиль на реалистичных данных
3. Найди самое узкое место
4. Оптимизируй только его
5. Измерь снова
6. Повтори
Оптимизировать то, что занимает 2% времени - пустая трата сил.
Какие инструменты используете вы? Был случай, когда профилирование показало что-то неожиданное?🚬
🚀 Пост Guru Rust: @PaulEdd
Как найти, что тормозит в программе?
Интуиция нас часто обманывает. Кажется, что тормозит сложный алгоритм - а на деле проблема в лишних аллокациях или клонировании строк в цикле. Без конкретных измерений оптимизация превращается в лотерею: переписываешь код, который и так работал нормально, а реальное узкое место не трогаешь.
Профилирование позволяет посмотреть, какие участки кода тормозят или где в программе утечки памяти 🫥
Какие подходы существуют
1. Семплирование - профилировщик периодически «фотографирует» стек вызовов. Если функция часто попадает в выборку, значит в ней тратится много времени.
Этот подход почти не замедляет программу.
2. Второй подход. В код вставляются метки, в которых замеряется точное время входа-выхода. Распространено, потому что легко сделать с помощью логов.
3. Микробенчмарки. Изолированный замер конкретной функции. Можно использовать, к примеру, для сравнения двух реализаций.
4. Профилирование памяти. Где и сколько аллокаций. В Rust утечки редки, но лишние аллокации тормозят.
Инструменты профилирования
- perf + flamegraph - sampling-профилирование на Linux. Рисует наглядную картину: чем шире блок, тем больше времени в функции.
cargo install flamegraph
cargo flamegraph --bin myapp
# открываешь flamegraph.noscript в браузере
- criterion - микробенчмарки со статистикой. Сравниваешь две реализации и видишь, какая быстрее:
use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn fibonacci(n: u64) -> u64 {
match n {
0 | 1 => n,
_ => fibonacci(n - 1) + fibonacci(n - 2),
}
}
fn bench(c: &mut Criterion) {
c.bench_function("fib 20", |b| {
b.iter(|| fibonacci(black_box(20)))
});
}
criterion_group!(benches, bench);
criterion_main!(benches);- tracing + tracy - для асинхронного кода. Показывает таймлайн: что выполнялось, что ждало, где блокировки.
- heaptrack / dhat - профилирование памяти. Находит, где программа просит память чаще всего.
Порядок действий
1. Убедись, что проблема есть - может, код уже достаточно быстрый
2. Собери профиль на реалистичных данных
3. Найди самое узкое место
4. Оптимизируй только его
5. Измерь снова
6. Повтори
Оптимизировать то, что занимает 2% времени - пустая трата сил.
Какие инструменты используете вы? Был случай, когда профилирование показало что-то неожиданное?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2
#Собес #error_handling #result #custom_errors
🤔 Опиши, как реализовать продвинутые паттерны обработки ошибок в Rust, такие как комбинация Result с пользовательскими типами ошибок и цепочка операторов ? для лаконичной обработки ошибок
💬 Кратко:
Пользовательские типы ошибок (
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Опиши, как реализовать продвинутые паттерны обработки ошибок в Rust, такие как комбинация Result с пользовательскими типами ошибок и цепочка операторов ? для лаконичной обработки ошибок
💬 Кратко:
Пользовательские типы ошибок (
enum) позволяют точно описывать различные сценарии ошибок, а комбинация Result с ? обеспечивает компактную и читаемую обработку ошибок. Это помогает передавать ошибки через стек вызовов и обрабатывать их на верхнем уровне.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
#Собес #git
🤔 Что такое распределённая система контроля версий?
💬 Кратко:
Распределённая система контроля версий (например, Git) сохраняет полную копию репозитория у каждого участника проекта. Это делает работу более надёжной, позволяет работать оффлайн и обеспечивает лёгкое слияние изменений.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое распределённая система контроля версий?
💬 Кратко:
Распределённая система контроля версий (например, Git) сохраняет полную копию репозитория у каждого участника проекта. Это делает работу более надёжной, позволяет работать оффлайн и обеспечивает лёгкое слияние изменений.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#tool #профиль
📚 Awesome GitHub Profile: ваш профессиональный бренд в цифровом мире
Это уникальный инструмент для персонализации вашего GitHub-профиля, который поможет вам создать впечатляющее портфолио и выделиться среди других разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Awesome GitHub Profile: ваш профессиональный бренд в цифровом мире
Это уникальный инструмент для персонализации вашего GitHub-профиля, который поможет вам создать впечатляющее портфолио и выделиться среди других разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #unwrap #expect #panic
🤔 В чём разница между .unwrap() и .expect() в Rust?
💬 Кратко:
Метод
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 В чём разница между .unwrap() и .expect() в Rust?
💬 Кратко:
Метод
.unwrap() вызывает панику, если значение отсутствует, отображая стандартное сообщение об ошибке. Метод .expect() делает то же самое, но позволяет указать собственное сообщение об ошибке.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал