Дэвид Дрисдейл | Эффективный Rust [2 книги] (2024, 2025) [PDF, EPUB] -Автор: Дэвид Дрисдейл Перевод: Д. Брайт Издательство: O'Reilly Media, Спринт Бук Серия: Библиотека программиста ISBN: 978-601-08-4868-9, 978-1098151409 Жанр: Компьютерная литература. Программирование. Интернет и технологии Язык: Русский, английский Формат: PDF, EPUB Качество: Изначально электронное (ebook) Иллюстрации: Цветные и черно-белые Описание: Популярность Rust растет, отчасти благодаря таким функциям, как безопасность памяти, безопасность типов и безопасность потоков. Но эти, же элементы также могут сделать изучение Rust сложной задачей даже для опытных программистов. Это практическое руководство поможет вам перейти к написанию идиоматического Rust, при этом в полной мере используя систему типов Rust, гарантии безопасности и развивающуюся экосистему. Если вы инженер-программист, имеющий опыт работы с существующим компилируемым языком, или если вы изо всех сил пытаетесь преобразовать базовое понимание синтаксиса Rust в работающие программы, эта книга для вас. Сосредоточившись на концептуальных различиях между Rust и другими компилируемыми языками и предоставив конкретные рекомендации, которым программисты могут легко следовать, Effective Rust вскоре заставит вас писать беглый Rust, а не просто плохо переведенный C++. - Понять структуру системы типов Rust - Изучить идиомы Rust для обработки ошибок, итерации и многого другого - Узнать, как работать с экосистемой ящиков Rust - Использовать систему типов Rust для выражения своего дизайна - Побеждать в битвах с помощью проверки заимствований - Создать надежный проект, который в полной мере использует экосистему инструментов Rust
"Дополнительная информация:"
Предисловие Для кого эта книга Версия Rust Структура издания Условные обозначения Благодарности От издательства Глава 1. Типы Рекомендация 1. Используйте систему типов для выражения структур данных Фундаментальные типы Составные типы Перечисления Перечисления с полями Распространенные типы перечислений Рекомендация 2. Используйте систему типов для выражения типичного поведения Функции и методы Указатели функций Замыкания Трейты Рекомендация 3. Предпочитайте преобразования Option и Result вместо явных выражений match Запомните Рекомендация 4. Предпочитайте идиоматические типы Error Трейт Error Минимальные ошибки Вложенные ошибки Трейт-объекты Библиотеки и приложения Запомните Рекомендация 5. Изучите преобразования типов Пользовательские преобразования типов Приведения Неявное приведение Рекомендация 6. Используйте паттерн newtype Обход правила сироты для трейтов Ограничения newtype Рекомендация 7. Для сложных типов используйте паттерн «Строитель» Рекомендация 8. Познакомьтесь со ссылочными типами и указателями Ссылки в Rust Трейты указателей Типы жирных указателей Другие трейты указателей Типы умных указателей Рекомендация 9. Рассмотрите использование преобразований итераторов вместо явных циклов Трейты итераторов Преобразования итераторов Потребители итераторов Создание коллекций из значений Result Преобразование циклов Когда явный вариант лучше Глава 2. Трейты Рекомендация 10. Изучите стандартные трейты Типичные стандартные трейты Стандартные трейты из других рекомендаций Перегрузки операторов Обобщение Рекомендация 11. Реализуйте трейт Drop для паттернов RAII Рекомендация 12. Уясните компромиссы между обобщениями и трейт-объектами Обобщения Трейт-объекты Базовые сравнения Дополнительные границы трейтов Безопасность трейт-объектов Компромиссы Рекомендация 13. Минимизируйте число необходимых методов трейтов с помощью предустановленных реализаций Глава 3. Концепции Рекомендация 14. Уясните принцип времени жизни Знакомство со стеком Эволюция времени жизни Продолжительность времени жизни Арифметика времени жизни Правила пропуска времени жизни Время жизни 'static Время жизни и куча Время жизни в структурах данных Анонимное время жизни Запомните Рекомендация 15. Изучите работу модуля проверки заимствования Контроль доступа Правила заимствования Операции владельца Устранение разногласий с модулем проверки заимствования Запомните Рекомендация 16. Старайтесь не писать unsafe-код Рекомендация 17. Будьте осторожны при параллельном доступе к общему состоянию Гонка данных Взаимные блокировки Совет Рекомендация 18. Не паникуйте Рекомендация 19. Избегайте отражения Повышающее приведение вверх в будущих версиях Rust Рекомендация 20. Не поддавайтесь соблазну излишней оптимизации Структуры данных и аллокация Кто боится большого и страшного Copy? Ссылки и умные указатели Глава 4. Зависимости Рекомендация 21. Разберитесь в принципах семантического версионирования Основные аспекты SemVer SemVer для авторов крейтов SemVer для пользователей крейтов Рассуждения Рекомендация 22. Минимизация видимости Синтаксис для обозначения видимости Семантика видимости Рекомендация 23. Избегайте импорта с подстановкой Рекомендация 24. Повторный экспорт зависимостей, чьи типы присутствуют в вашем API Рекомендация 25. Управляйте графом ваших зависимостей Указание диапазона допустимых версий Решение проблем с помощью инструментов От чего зависеть Запомните Рекомендация 26. Остерегайтесь расползания feature Условная компиляция Features Запомните Глава 5. Инструменты Рекомендация 27. Документируйте публичные интерфейсы Инструменты Расположение дополнительной документации Где публикуется документация крейта Что не нужно документировать Запомните Рекомендация 28. Используйте макросы вдумчиво Декларативные макросы Процедурные макросы Когда использовать макросы Недостатки макросов Совет Рекомендация 29. Прислушивайтесь к Clippy Рекомендация 30. Пишите не только модульные тесты Модульные тесты Интеграционные тесты Тесты документации Примеры Бенчмарки Фаззинг-тестирование Советы по тестированию Запомните Рекомендация 31. Пользуйтесь преимуществами экосистемы инструментов Запомните эти инструменты Рекомендация 32. Настройте систему непрерывной интеграции Этапы непрерывной интеграции Принципы CI Публичные системы CI Глава 6. За пределами стандартного Rust Рекомендация 33. Рассмотрите вариант сделать код библиотеки no_std-совместимым core alloc Написание кода для no_std Выделение с возможностью сбоя Запомните Рекомендация 34. Контролируйте выход за границы FFI Вызов функций C из Rust Доступ к данным C из Rust Время жизни Вызов Rust из C Запомните Рекомендация 35. Используйте bindgen вместо ручного сопоставления встречных компонентов FFI За пределами C Послесловие Об авторе Дэвид Дрисдейл (David Drysdale) занимает должность ведущего специалиста по программному обеспечению в Google и с 2019 года работает преимущественно с Rust. Он портировал на Rust криптографическую библиотеку Tink, а также руководил проектом по замене аппаратной библиотеки криптографии для Android (KeyMint) ее аналогом на Rust. Дэвид имеет богатый опыт работы с C/C++ и Go, а также участвовал в разработке различных проектов, включая ядро Linux, ПО для плоскостей управления в сетевых архитектурах и мобильные приложения для видеосвязи. Дэвид Дрисдейл. Эффективный Rust. 35 конкретных способов улучшить код В оригинале David Drysdale. Effective Rust: 35 Specific Ways to Improve Your Rust Code Rust's popularity is growing, due in part to features like memory safety, type safety, and thread safety. But these same elements can also make learning Rust a challenge, even for experienced programmers. This practical guide helps you make the transition to writing idiomatic Rust—while also making full use of Rust's type system, safety guarantees, and burgeoning ecosystem. If you're a software engineer who has experience with an existing compiled language, or if you've struggled to convert a basic understanding of Rust syntax into working programs, this book is for you. By focusing on the conceptual differences between Rust and other compiled languages, and by providing specific recommendations that programmers can easily follow, Effective Rust will soon have you writing fluent Rust, not just badly translated C++. - Understand the structure of Rust's type system - Learn Rust idioms for error handling, iteration, and more - Discover how to work with Rust's crate ecosystem - Use Rust's type system to express your design - Win fights with the borrow checker - Build a robust project that takes full advantage of the Rust tooling ecosystem
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы не можете скачивать файлы