RS Rust  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Времена жизни

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 5 тематическим шкалам и подробные объяснения.
Вопрос 1 из 25
Как исправить участок с `String::from` без обхода проверки компилятора?
RustRust · Тестирование и инструменты Cargo
/// ```compile_fail
/// fn bad() -> &'static str {
///     let s = String::from("x");
///     &s
/// }
/// ```
pub fn lifetime_example() {}
Вопрос 2 из 25
Что должно войти в отрицательный тест механизма «Сокращение времён жизни»?
Вопрос 3 из 25
Как лучше всего описать гарантию механизма «Статические ссылки»?
Вопрос 4 из 25
Что показывает `choose` применительно к механизму «Сокращение времён жизни»?
RustRust · Сокращение времён жизни
fn choose(x: &str, y: &str) -> &str { x }
Вопрос 5 из 25
Какой сценарий нельзя выводить из одного положительного примера «Связь входа и выхода»?
Вопрос 6 из 25
Какое утверждение о «Связь входа и выхода» остаётся верным при смене входных данных?
Вопрос 7 из 25
Какой способ правки делает использование `head` корректным и явным?
RustRust · Сокращение времён жизни
fn head(text: &str) -> &str { &text[..1] }
Вопрос 8 из 25
Какие значения останутся доступными после `longer`?
RustRust · Аннотации
fn longer<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() >= y.len() { x } else { y }
}
Вопрос 9 из 25
Что именно подтверждает проверка с `String::from`?
RustRust · Аннотации
let outer = String::from("long");
let result;
{
    let inner = String::from("x");
    result = longer(&outer, &inner);
    println!("{result}");
}
Вопрос 10 из 25
Какой вывод допустим после запуска `String::from` и чего он не доказывает?
RustRust · Связь входа и выхода
let long = String::from("long");
let r;
{
    let hint = String::from("hint");
    r = first(&long, &hint);
}
assert_eq!(r, "long");
Вопрос 11 из 25
Что система типов не проверит самостоятельно для механизма «Тестирование и инструменты Cargo»?
Вопрос 12 из 25
Какое правило Rust точнее всего описывает механизм «Тестирование и инструменты Cargo»?
Вопрос 13 из 25
Что ещё нужно проверить, прежде чем считать реализацию «Статические ссылки» надёжной?
Вопрос 14 из 25
Как устранить причину диагностики в строке с `longer`?
RustRust · Аннотации
fn longer<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() >= y.len() { x } else { y }
}
Вопрос 15 из 25
Каким будет результат последней строки этого фрагмента?
RustRust · Статические ссылки
let literal: &'static str = "built into binary";
fn same(x: &'static str) -> &'static str { x }
println!("{}", same(literal));
Вопрос 16 из 25
Какой путь выполнения выберет Rust после `first`?
RustRust · Связь входа и выхода
fn first<'a>(primary: &'a str, _hint: &str) -> &'a str { primary }
Вопрос 17 из 25
Что проверяет `Box::leak`, если не расширять вывод за пределы выполненного пути?
RustRust · Статические ссылки
let leaked: &'static str = Box::leak(String::from("cached").into_boxed_str());
assert_eq!(leaked, "cached");
Вопрос 18 из 25
Какой путь выполнения выберет Rust после `head`?
RustRust · Сокращение времён жизни
fn head(text: &str) -> &str { &text[..1] }
Вопрос 19 из 25
Что Rust гарантирует при корректном использовании «Сокращение времён жизни»?
Вопрос 20 из 25
На какое правило следует опираться при ревью кода по теме «Аннотации»?
Вопрос 21 из 25
Какое изменение решает проблему в месте применения `first`?
RustRust · Связь входа и выхода
fn first<'a>(primary: &'a str, _hint: &str) -> &'a str { primary }
Вопрос 22 из 25
Как следует интерпретировать результат проверки `String::from`?
RustRust · Тестирование и инструменты Cargo
/// ```compile_fail
/// fn bad() -> &'static str {
///     let s = String::from("x");
///     &s
/// }
/// ```
pub fn lifetime_example() {}
Вопрос 23 из 25
Какую регрессию должен ловить `String::from`?
RustRust · Тестирование и инструменты Cargo
/// ```compile_fail
/// fn bad() -> &'static str {
///     let s = String::from("x");
///     &s
/// }
/// ```
pub fn lifetime_example() {}

# cargo test --doc
# RUSTDOCFLAGS="-D warnings" cargo test --doc
Вопрос 24 из 25
Какой эксплуатационный край отличает контракт «Аннотации» от удачного примера?
Вопрос 25 из 25
Какая правка выдержит ревью контракта «Статические ссылки»?
RustRust · Статические ссылки
let literal: &'static str = "built into binary";
fn same(x: &'static str) -> &'static str { x }
println!("{}", same(literal));

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

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

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

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