Kuest AI

Изучайте что угодно — бесплатно

Начать бесплатно

Изучайте Rust в 10 раз быстрее с ИИ

Понятные объяснения владения, заимствования и времён жизни. Вставьте ошибку borrow checker, и Kuest поможет понять, от чего он вас защищает.

817,000+учеников уже занимаются с Kuest

тем
10
Версия 1.0
Выпущена в 2015 году
Тип
Компилируемый, со статической типизацией
Известен благодаря
Безопасности памяти без сборщика мусора

Посмотрите, как объясняет Kuest

Сначала он спрашивает, а потом объясняет — так вы думаете сами и лучше запоминаете.

Вы: let s1 = String::from("hi"); let s2 = s1; println!("{}", s1); выдаёт "borrow of moved value: s1". Почему?
Kuest: В Rust у каждого значения ровно один владелец. После let s2 = s1; как вы думаете, кому принадлежит String?
Вы: Я думал, что обоим — как при копировании в Python.
Kuest: В этом ключевое отличие. Для String присваивание перемещает владение к s2. Что произошло бы, если бы s1 тоже продолжала владеть строкой, когда обе переменные вышли бы из области видимости?
Вы: Обе попытались бы освободить одну и ту же память. Поэтому после перемещения Rust делает s1 недействительной.
Kuest: Именно. Если вам действительно нужны две отдельные строки, что можно написать вместо этого?
Вы: let s2 = s1.clone(); чтобы создать настоящую копию, или let s2 = &s1; если мне нужно только заимствовать строку.

Присваивание String перемещает владение; clone() создаёт копию, а & заимствует значение без перемещения.

Ученики, которые всерьёз занимаются с Kuest

учеников
817,000+
стран
100+
  • С C до A по химии

    “Я перестал списывать ответы и начал по-настоящему понимать. За один семестр моя оценка по химии выросла с C до A.”

    11-й класс, Техас
  • 3 часа → 40 минут

    “Мои конспекты за секунды превращаются в тест. То, на что раньше уходил весь вечер, теперь занимает столько же, сколько одна серия.”

    10-й класс, Калифорния
  • Наконец готов к SAT

    “План точно говорил, что делать каждый день. Впервые я пришёл на экзамен спокойным.”

    12-й класс, Нью-Йорк
  • Не даёт мне пропустить ни шаг

    “Сначала раздражало, но в день теста это спасло. Я смог решить каждую задачу без него.”

    9-классник, Огайо
  • Лучше, чем мой репетитор

    “Он доступен и в полночь, терпелив и стоит меньше, чем одно занятие с моим прежним репетитором.”

    Студент 1-го курса, Флорида
  • Моя серия — уже 94 дня

    “Квесты занимают десять минут. Я делаю их в автобусе. И каким-то образом теперь уже я объясняю друзьям биологию.”

    11-классник, Джорджия
  • Испанский наконец стал понятен

    “Разговоры вслух с тьютором помогли исправить произношение быстрее, чем целый год занятий.”

    10-классник, Аризона
  • Нашёл пробелы за один вечер

    “Проверка пробелов показала, что я вообще не понимал моли. Разобрался за 15 минут.”

    11-классник, Джорджия
  • Родитель на связи: больше никаких срывов в 9 вечера

    “Мой сын получает настоящую помощь, а мне не нужно делать вид, что я помню матанализ. И я каждую неделю вижу его прогресс.”

    Родитель, Вашингтон

Методика

Как изучать Rust с Kuest

Компилятор Rust строг, и его сообщения об ошибках — часть обучения. Читайте каждое сообщение целиком, спрашивайте, какое правило оно обеспечивает, и отмечайте, кому что принадлежит. Владение и заимствование становятся понятны на множестве небольших примеров в течение нескольких дней, а не за одно долгое занятие.

  1. Разберитесь в правилахЧат с наставником

    Спрашивайте о владении, заимствовании или Option и отвечайте на проверочные вопросы Kuest, прежде чем двигаться дальше.

  2. Читайте borrow checkerСфотографировать

    Вставьте свой код и ошибку компилятора или сделайте снимок экрана — Kuest поможет увидеть, какое правило он применяет.

  3. Схематично покажите владениеУчебная доска

    Смотрите на учебной доске схемы владельцев, заимствований и областей видимости, чтобы понять перемещения и времена жизни.

  4. Скомпилируется ли код?Квизы

    Отвечайте на задания с фрагментом кода: скомпилируется ли он, а если нет — почему.

  5. Держите шаблоны под рукойКарточки

    Повторяйте методы Option и Result, синтаксис трейтов и частые шаблоны заимствования в интервальных карточках.

  6. Сосредоточьтесь на сложных местахПоиск пробелов

    Позвольте Kuest определить, на чём вы постоянно спотыкаетесь, например на временах жизни или &mut, и тренируйте именно это.

Что вы изучите

Нажмите на тему, чтобы начать изучать её сейчас.

  1. 01Cargo и основыСоздавайте проекты с cargo new и используйте let, mut и базовые типы
  2. 02Управление потоком и функцииИспользуйте if, loop, while и for, а также возвращайте значения из выражений
  3. 03Владение и перемещенияОпределяйте, когда значение перемещается и почему старую переменную нельзя использовать
  4. 04Заимствование и ссылкиИспользуйте & и &mut и соблюдайте правило одного писателя или множества читателей
  5. 05Строки, срезы и коллекцииВыбирайте между String и &str и используйте Vec и HashMap
  6. 06Структуры и перечисленияМоделируйте данные с помощью structs и enums и добавляйте методы через impl
  7. 07Сопоставление с образцомОбрабатывайте все случаи с match, if let и Option<T>
  8. 08Обработка ошибокВозвращайте Result<T, E> и передавайте ошибки с оператором ?
  9. 09Трейты и дженерикиИспользуйте трейты для общего поведения и пишите обобщённые функции с ограничениями
  10. 10Времена жизниЧитайте аннотации времён жизни и объясняйте, почему ссылка не может жить дольше своих данных

Попробуйте спросить

Нажмите на вопрос — и Kuest начнёт объяснять его шаг за шагом.

Поможет подготовиться к

  • Курсы системного программирования
  • Проекты и работа с открытым исходным кодом

Месяц с Kuest стоит дешевле часа с репетитором

То же терпение, в любое время, по любому предмету. Или оставайтесь на бесплатном плане навсегда.

Репетитор

$40–80за один час

  • Запись за несколько дней
  • Один предмет за занятие
  • Занятие заканчивается через час

Kuest Plus

$10в месяц при оплате за год

  • Все предметы и экзамены на этом сайте
  • В любое время и столько, сколько нужно
  • Квизы, карточки, подкасты и пробные экзамены

Ответы на вопросы

Ваша следующая учебная сессия начинается здесь

Бесплатный план навсегда. Карта не нужна.

Начать бесплатно