#Собес #loop #infinite_loop #break
🤔 Как создать бесконечный цикл в Rust?
💬 Кратко:
Для создания бесконечного цикла используется ключевое слово
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как создать бесконечный цикл в Rust?
💬 Кратко:
Для создания бесконечного цикла используется ключевое слово
loop. Для выхода из цикла применяется ключевое слово break.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1🐳1
#Собес #iterators #custom_iterators #data_pipelines
🤔 Объясни концепцию реализации кастомных итераторов в Rust. Как их можно использовать для создания переиспользуемых и эффективных конвейеров обработки данных?
💬 Кратко:
Пользовательские итераторы реализуют трейт
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Объясни концепцию реализации кастомных итераторов в Rust. Как их можно использовать для создания переиспользуемых и эффективных конвейеров обработки данных?
💬 Кратко:
Пользовательские итераторы реализуют трейт
Iterator с методом next. Они полезны для создания специфичных способов обхода данных и могут быть объединены с методами, такими как map и filter, для создания удобных конвейеров обработки.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🦀 CAS 🦀
Сейчас прокачаем ваш многопоточный код🤔
СAS работает по следующему принципу:🧐
1. Читаем текущее значение
2. Вычисляем новое
3. Пытаемся заменить, но ТОЛЬКО если значение не изменилось
4. Если кто-то успел раньше - повторяем
Простой пример со счетчиками:
Конечно, в многопоточке можно использовать и Mutex, но у CAS есть очевидные преимущества:
🔥 Скорость: в 10-100 раз быстрее при низкой конкуренции
🔥 Нет блокировок: потоки не ждут друг друга
🔥 Нет дедлоков: просто невозможны по дизайну
Используйте CAS для создания быстрых параллельных процессов!⚡️
🚀 Пост Guru Rust: @PaulEdd
Сейчас прокачаем ваш многопоточный код
CAS (Compare-And-Swap) - это атомарная операция, которая позволяет безопасно изменять данные в многопоточных программах БЕЗ мутексов!
СAS работает по следующему принципу:
1. Читаем текущее значение
2. Вычисляем новое
3. Пытаемся заменить, но ТОЛЬКО если значение не изменилось
4. Если кто-то успел раньше - повторяем
Простой пример со счетчиками:
use std::sync::atomic::{AtomicU64, Ordering};
let counter = AtomicU64::new(0);
// В цикле пробуем увеличить счётчик
loop {
let current = counter.load(Ordering::Acquire);
let new = current + 1;
// Если успели — выходим, если нет — повторяем
if counter.compare_exchange(
current,
new,
Ordering::Release,
Ordering::Acquire
).is_ok() {
break;
}
}Конечно, в многопоточке можно использовать и Mutex, но у CAS есть очевидные преимущества:
🔥 Скорость: в 10-100 раз быстрее при низкой конкуренции
🔥 Нет блокировок: потоки не ждут друг друга
🔥 Нет дедлоков: просто невозможны по дизайну
Используйте CAS для создания быстрых параллельных процессов!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤1
#Собес #match #pattern_matching #option
🤔 Приведи пример использования выражения match в Rust?
💬 Кратко:
Выражение
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Приведи пример использования выражения match в Rust?
💬 Кратко:
Выражение
match в Rust используется для сопоставления значений с возможными вариантами. Оно особенно полезно при работе с типами Option, Result или перечислениями (enum).📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥2
#Собес #git_init
🤔 Что такое репозиторий Git и как вы его инициализируете?
💬 Кратко:
Репозиторий Git — это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое репозиторий Git и как вы его инициализируете?
💬 Кратко:
Репозиторий Git — это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
git init, которая создаёт скрытую папку .git, где Git сохраняет свои данные.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#course #начинающие
📚 Educative
Курс Educative "Learn Rust from Scratch" предлагает практический подход к освоению Rust, начиная с базовой программы «Hello world» и постепенно знакомя с такими общими понятиями, как массивы, строки, векторы, перечисления, структуры, признаки, обобщения, функции и логика.
Курс также затрагивает сложные темы, такие как Lifetime и управление памятью.
После завершения у вас будет прочная основа в основах Rust и вы будете готовы к более сложным концепциям, вооружившись навыками уверенного использования Rust в своих проектах.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Educative
Курс Educative "Learn Rust from Scratch" предлагает практический подход к освоению Rust, начиная с базовой программы «Hello world» и постепенно знакомя с такими общими понятиями, как массивы, строки, векторы, перечисления, структуры, признаки, обобщения, функции и логика.
Курс также затрагивает сложные темы, такие как Lifetime и управление памятью.
После завершения у вас будет прочная основа в основах Rust и вы будете готовы к более сложным концепциям, вооружившись навыками уверенного использования Rust в своих проектах.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #variable #assignment #bash
🤔 Как объявить переменную в Bash?
💬 Кратко:
В Bash переменная объявляется без ключевого слова, просто через
Значение переменной можно получить через
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как объявить переменную в Bash?
💬 Кратко:
В Bash переменная объявляется без ключевого слова, просто через
= без пробелов:VAR=value
Значение переменной можно получить через
$VAR.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🦀 Асинхронка 🦀
Я уверен, вы уже привыкли к тому, что в Rust очень много zero-cost абстракций. Асинхронка дополняет список.
Давайте посмотрим, как работать с асинхронными функциями в Rust.🧐
Простой пример - загрузка файла
Код с виду выглядит синхронным, а компилятор под капотом превращает его в эффективный автомат состояний. И никаких накладных расходов в рантайме.
Что происходит под капотом?🤔
1️⃣ Компилятор создаёт конечный автомат состояний.
Ваша async-функция превращается в enum с состояниями:
2️⃣ Каждый `.await` - это точка приостановки
Когда вы пишете
- Сохраняет текущее состояние функции (все локальные переменные)
- Возвращает управление планировщику
- Запоминает, где продолжить выполнение
Пока одна задача ждёт ответа от сервера, планировщик переключается на другие задачи. Никакого блокирования потока!
3️⃣ Рантайм крутит все задачи
Tokio/async-std работает как диспетчер:
- Опрашивает каждую задачу: "Ты готова продолжить?"
- Если нет → переключается на следующую
- Если да → выполняет следующий кусок кода до
Вся работа получается очень быстрой:⚡️
- Можно создать миллионы асинхронных задач
- Переключение = просто вызов функции (наносекунды)
- Нет тяжёлых системных вызовов
И в рантайме получаем только эффективный машинный код! 🚀
🚀 Пост Guru Rust: @PaulEdd
Я уверен, вы уже привыкли к тому, что в Rust очень много zero-cost абстракций. Асинхронка дополняет список.
Давайте посмотрим, как работать с асинхронными функциями в Rust.
Простой пример - загрузка файла
use tokio;
async fn download_file(url: &str) -> String {
println!("Начинаю загрузку {}", url);
let response = reqwest::get(url).await.unwrap();
println!("Получил ответ!");
let content = response.text().await.unwrap();
println!("Загрузил {} байт", content.len());
content
}
#[tokio::main]
async fn main() {
let task1 = download_file("https://example.com/file1");
let task2 = download_file("https://example.com/file2");
// Запускаем параллельно!
let (content1, content2) = tokio::join!(task1, task2);
}
Код с виду выглядит синхронным, а компилятор под капотом превращает его в эффективный автомат состояний. И никаких накладных расходов в рантайме.
Что происходит под капотом?
1️⃣ Компилятор создаёт конечный автомат состояний.
Ваша async-функция превращается в enum с состояниями:
// Примерно так видит компилятор вашу функцию
enum DownloadFileState {
Start {
url: String,
},
WaitingForResponse {
url: String,
response_future: ResponseFuture,
},
WaitingForText {
text_future: TextFuture,
},
Done,
}
2️⃣ Каждый `.await` - это точка приостановки
Когда вы пишете
.await, компилятор:- Сохраняет текущее состояние функции (все локальные переменные)
- Возвращает управление планировщику
- Запоминает, где продолжить выполнение
// Это:
let response = reqwest::get(url).await;
let content = response.text().await;
// Превращается в переключение между состояниями:
// Start → WaitingForResponse → WaitingForText → Done
Пока одна задача ждёт ответа от сервера, планировщик переключается на другие задачи. Никакого блокирования потока!
3️⃣ Рантайм крутит все задачи
Tokio/async-std работает как диспетчер:
- Опрашивает каждую задачу: "Ты готова продолжить?"
- Если нет → переключается на следующую
- Если да → выполняет следующий кусок кода до
.awaitВся работа получается очень быстрой:
- Можно создать миллионы асинхронных задач
- Переключение = просто вызов функции (наносекунды)
- Нет тяжёлых системных вызовов
И в рантайме получаем только эффективный машинный код! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤2
#Собес #zero-copy #deep_copy #copy
🤔 Объясни концепцию нулевой копии в Rust и как она помогает оптимизировать производительность. Чем она отличается от глубоких копий?
💬 Кратко:
Zero-copy позволяет избегать лишнего копирования данных, передавая ссылки вместо полного дублирования. Это улучшает производительность, так как экономит память и время обработки. В отличие от deep copy, где создаётся полная копия данных, zero-copy работает с существующими данными напрямую.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Объясни концепцию нулевой копии в Rust и как она помогает оптимизировать производительность. Чем она отличается от глубоких копий?
💬 Кратко:
Zero-copy позволяет избегать лишнего копирования данных, передавая ссылки вместо полного дублирования. Это улучшает производительность, так как экономит память и время обработки. В отличие от deep copy, где создаётся полная копия данных, zero-copy работает с существующими данными напрямую.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥1
#Собес #kubernetes #container_orchestration #automation
🤔 Что такое Kubernetes?
💬 Кратко:
Kubernetes — это платформа с открытым исходным кодом для оркестрации контейнеров. Она автоматизирует развертывание, управление и масштабирование контейнеризированных приложений. Вместо того чтобы вручную управлять контейнерами, Kubernetes позволяет использовать декларативные конфигурации для их настройки. Это помогает запускать приложения надежно, обеспечивая их отказоустойчивость и гибкость.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое Kubernetes?
💬 Кратко:
Kubernetes — это платформа с открытым исходным кодом для оркестрации контейнеров. Она автоматизирует развертывание, управление и масштабирование контейнеризированных приложений. Вместо того чтобы вручную управлять контейнерами, Kubernetes позволяет использовать декларативные конфигурации для их настройки. Это помогает запускать приложения надежно, обеспечивая их отказоустойчивость и гибкость.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #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