RS Rust  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Типы, переменные и shadowing

Проверяет чтение скалярных значений, составных типов, массивов и повторного связывания имён. Вопросы распределены между чтением кода, диагностикой компиляции, выбором исправления, граничными случаями и инженерными решениями. Базовый синтаксис соответствует Rust 2024 edition; задания не требуют nightly, если это прямо не сказано.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 4 тематическим шкалам и подробные объяснения.
Вопрос 1 из 20
Какое свойство «Кортежи» сохранится после небольшого рефакторинга?
Вопрос 2 из 20
Как устранить исходную ошибку, связанную с `String::from`?
RustRust · Кортежи
let pair = (String::from("id"), 7u32);
let (name, count) = pair;
println!("{name}:{count}");
Вопрос 3 из 20
Что нужно изменить вокруг `parse`, чтобы устранить первопричину?
RustRust · Повторное связывание имён
let value = "41";
let value: i32 = value.parse().unwrap();
let value = value + 1;
println!("{value}");
Вопрос 4 из 20
Чем завершится фрагмент, посвящённый механизму «Массивы»?
RustRust · Массивы
let a = [3; 4];
let b: [i32; 3] = [3, 3, 3];
println!("{} {}", a.len(), b.len());
Вопрос 5 из 20
Какой дефект способен воспроизвести тест `String::from`?
RustRust · Кортежи
let pair = (String::from("x"), 9u32);
let first = pair.0;
println!("{}", pair.1);
Вопрос 6 из 20
Какое правило связывает типы и наблюдаемое поведение в механизме «Скалярные типы»?
Вопрос 7 из 20
Какое предусловие «Повторное связывание имён» необходимо записать явно?
Вопрос 8 из 20
Какой вывод допустим после запуска `&mut` и чего он не доказывает?
RustRust · Повторное связывание имён
struct Trace(&'static str);
impl Drop for Trace { fn drop(&mut self) { println!("{}", self.0); } }
let item = Trace("old");
let item = Trace("new");
println!("body");
Вопрос 9 из 20
Какой принцип лежит в основе механизма «Повторное связывание имён»?
Вопрос 10 из 20
Какая правка выдержит ревью контракта «Скалярные типы»?
RustRust · Скалярные типы
let max: u8 = 255;
println!("{:?}", max.checked_add(1));
Вопрос 11 из 20
Какое условие способно превратить рабочий пример «Скалярные типы» в ошибочный?
Вопрос 12 из 20
Как переписать реализацию без лишней копии и скрытого предусловия?
RustRust · Массивы
let a = [3; 4];
let b: [i32; 3] = [3, 3, 3];
println!("{} {}", a.len(), b.len());
Вопрос 13 из 20
Чем завершится выполнение фрагмента с `String::from`?
RustRust · Кортежи
let pair = (String::from("id"), 7u32);
let (name, count) = pair;
println!("{name}:{count}");
Вопрос 14 из 20
Какую регрессию должен ловить `saturating_add`?
RustRust · Скалярные типы
assert_eq!(250u8.saturating_add(20), 255);
assert_eq!(250u8.wrapping_add(20), 14);
Вопрос 15 из 20
Какое состояние получится после всех действий с `parse`?
RustRust · Повторное связывание имён
let value = "41";
let value: i32 = value.parse().unwrap();
let value = value + 1;
println!("{value}");
Вопрос 16 из 20
Какое правило связывает типы и наблюдаемое поведение в механизме «Массивы»?
Вопрос 17 из 20
Какой вывод о выполнении `checked_add` подтверждает код?
RustRust · Скалярные типы
let max: u8 = 255;
println!("{:?}", max.checked_add(1));
Вопрос 18 из 20
Какой граничный случай важнее всего учесть для механизма «Кортежи»?
Вопрос 19 из 20
Как правильно истолковать результат проверки механизма «Массивы»?
RustRust · Массивы
let a = [10, 20, 30];
assert_eq!(a.get(3), None);
Вопрос 20 из 20
Что должно войти в отрицательный тест механизма «Массивы»?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу