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

Структуры и методы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 4 тематическим шкалам и подробные объяснения.
Вопрос 1 из 20
Какой край контракта «Блоки реализации impl» чаще всего остаётся незамеченным?
Вопрос 2 из 20
Как обновить фрагмент с `String::from`, чтобы ошибка исчезла по существу?
RustRust · Структуры struct
struct User { name: String, active: bool }
let user = User { name: String::from("Ada"), active: true };
let name = user.name;
println!("{}", user.active);
Вопрос 3 из 20
Что произойдёт после операции `bump`?
RustRust · Блоки реализации impl
struct Counter { value: i32 }
impl Counter {
    fn bump(&mut self) { self.value += 1; }
    fn value(&self) -> i32 { self.value }
}
let mut c = Counter { value: 4 };
c.bump();
println!("{}", c.value());
Вопрос 4 из 20
Как лучше всего описать гарантию механизма «Обновление структуры»?
Вопрос 5 из 20
Какой случай чаще всего обнаруживает скрытую ошибку в реализации «Структуры struct»?
Вопрос 6 из 20
Какой путь выполнения выберет Rust после `Point::origin`?
RustRust · Связанные функции
struct Point { x: i32, y: i32 }
impl Point {
    fn origin() -> Self { Self { x: 0, y: 0 } }
}
let p = Point::origin();
println!("{}", p.x + p.y);
Вопрос 7 из 20
Что важно понимать о механизме «Связанные функции», прежде чем менять код?
Вопрос 8 из 20
Как исправить участок с `Point::origin` без обхода проверки компилятора?
RustRust · Связанные функции
struct Point { x: i32, y: i32 }
impl Point {
    fn origin() -> Self { Self { x: 0, y: 0 } }
}
let p = Point::origin();
println!("{}", p.x + p.y);
Вопрос 9 из 20
Какое свойство «Блоки реализации impl» сохранится после небольшого рефакторинга?
Вопрос 10 из 20
Какое ограничение языка определяет поведение «Структуры struct»?
Вопрос 11 из 20
Какое предусловие «Связанные функции» необходимо записать явно?
Вопрос 12 из 20
Что именно подтверждает проверка с `#[derive(Clone)]`?
RustRust · Обновление структуры
#[derive(Clone)]
struct User { name: String, active: bool }
let base = User { name: "Ada".into(), active: true };
let copy = User { active: false, ..base.clone() };
assert!(base.active && !copy.active);
Вопрос 13 из 20
Какой вариант правки возвращает фрагмент с `User` к корректному контракту?
RustRust · Обновление структуры
struct User { name: String, email: String, active: bool }
let base = User { name: "Ada".into(), email: "a@x".into(), active: true };
let copy = User { email: "new@x".into(), ..base };
println!("{}", base.active);
Вопрос 14 из 20
Что именно подтверждает проверка с `Pair::new`?
RustRust · Связанные функции
struct Pair<T>(T, T);
impl<T> Pair<T> { fn new(a: T, b: T) -> Self { Self(a, b) } }
let p = Pair::new(2, 3);
assert_eq!(p.0 + p.1, 5);
Вопрос 15 из 20
Какой путь выполнения выберет Rust после `User`?
RustRust · Обновление структуры
struct User { name: String, email: String, active: bool }
let base = User { name: "Ada".into(), email: "a@x".into(), active: true };
let copy = User { email: "new@x".into(), ..base };
println!("{}", base.active);
Вопрос 16 из 20
Какое предусловие «Обновление структуры» необходимо записать явно?
Вопрос 17 из 20
Какой способ правки делает использование `bump` корректным и явным?
RustRust · Блоки реализации impl
struct Counter { value: i32 }
impl Counter {
    fn bump(&mut self) { self.value += 1; }
    fn value(&self) -> i32 { self.value }
}
let mut c = Counter { value: 4 };
c.bump();
println!("{}", c.value());
Вопрос 18 из 20
Какой вывод о выполнении `String::from` подтверждает код?
RustRust · Структуры struct
struct User { name: String, active: bool }
let user = User { name: String::from("Ada"), active: true };
let name = user.name;
println!("{}", user.active);
Вопрос 19 из 20
Какую регрессию должен ловить `into_inner`?
RustRust · Блоки реализации impl
struct Ticket(String);
impl Ticket { fn into_inner(self) -> String { self.0 } }
let t = Ticket("A1".into());
let id = t.into_inner();
// println!("{:?}", t.0);
Вопрос 20 из 20
Какая часть механизма «Структуры struct» зафиксирована тестом `User`?
RustRust · Структуры struct
struct User { name: String, active: bool }
let user = User { name: "Ada".into(), active: true };
let name = &user.name;
assert!(user.active && name == "Ada");

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

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

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

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