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

Владение значениями

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 4 тематическим шкалам и подробные объяснения.
Вопрос 1 из 20
Какая строка нарушает контракт «Перемещение»?
RustRust · Перемещение
let name = String::from("Ferris");
let alias = name;
println!("{name} / {alias}");
Вопрос 2 из 20
Что нужно изменить вокруг `&mut`, чтобы устранить первопричину?
RustRust · Освобождение памяти
struct Trace(&'static str);
impl Drop for Trace {
    fn drop(&mut self) { println!("drop {}", self.0); }
}
let _a = Trace("A");
let _b = Trace("B");
println!("body");
Вопрос 3 из 20
Как следует интерпретировать результат проверки `#[derive(Copy, Clone)]`?
RustRust · Копирование
#[derive(Copy, Clone)]
struct Token(String);
Вопрос 4 из 20
Какой способ устранит дефект и останется корректным на граничном входе?
RustRust · Копирование
let x: i32 = 12;
let y = x;
println!("{}", x + y);
Вопрос 5 из 20
Какой сценарий нельзя выводить из одного положительного примера «Перемещение»?
Вопрос 6 из 20
Какая часть механизма «Область видимости» зафиксирована тестом `String::from`?
RustRust · Область видимости
let mut value = String::from("a");
let view = &value;
println!("{view}");
value.push('b');
Вопрос 7 из 20
Что произойдёт с ресурсом после завершения показанного блока?
RustRust · Копирование
let x: i32 = 12;
let y = x;
println!("{}", x + y);
Вопрос 8 из 20
Как устранить причину диагностики в строке с `String::from`?
RustRust · Область видимости
let r: &str;
{
    let text = String::from("short");
    r = &text;
}
println!("{r}");
Вопрос 9 из 20
На какое правило следует опираться при ревью кода по теме «Перемещение»?
Вопрос 10 из 20
Какое утверждение о «Копирование» остаётся верным при смене входных данных?
Вопрос 11 из 20
Какой принцип лежит в основе механизма «Область видимости»?
Вопрос 12 из 20
На какую часть контракта распространяется проверка `String::from`?
RustRust · Перемещение
fn consume(_: String) {}
let text = String::from("log");
consume(text);
// println!("{text}");
Вопрос 13 из 20
Что нужно пересмотреть в использовании `String::from`, чтобы код стал корректным?
RustRust · Перемещение
let name = String::from("Ferris");
let alias = name;
println!("{name} / {alias}");
Вопрос 14 из 20
Какой эксплуатационный край отличает контракт «Освобождение памяти» от удачного примера?
Вопрос 15 из 20
Что произойдёт после операции `&mut`?
RustRust · Освобождение памяти
struct Trace(&'static str);
impl Drop for Trace {
    fn drop(&mut self) { println!("drop {}", self.0); }
}
let _a = Trace("A");
let _b = Trace("B");
println!("body");
Вопрос 16 из 20
Почему выполнение не дойдёт до последней строки?
RustRust · Область видимости
let r: &str;
{
    let text = String::from("short");
    r = &text;
}
println!("{r}");
Вопрос 17 из 20
Что показывает `std::fs::File::open` применительно к механизму «Освобождение памяти»?
RustRust · Освобождение памяти
let file = std::fs::File::open("app.log").unwrap();
std::mem::drop(file);
// file.metadata();
Вопрос 18 из 20
Какой граничный случай важнее всего учесть для механизма «Область видимости»?
Вопрос 19 из 20
Как сформулировать контракт механизма «Освобождение памяти» без привязки к именам переменных?
Вопрос 20 из 20
Какой эксплуатационный край отличает контракт «Копирование» от удачного примера?

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

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

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

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