💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 5 из 30
Какое объяснение механизма «Borrowed и owned формы» не смешивает компиляцию и выполнение?
Integration test имеет доступ к private API библиотеки так же, как модульный тест. В результате «Borrowed и owned формы» считали бы безопасным и на путях, которых пример не выполняет.
Borrowed-вход уменьшает ненужные перемещения, owned-выход отделяет результат от входа, а Cow выражает условное владение в одном типе.
Принимающий String API всегда удобнее, потому что явно получает владение. В результате «Borrowed и owned формы» считали бы безопасным и на путях, которых пример не выполняет.
API, принимающий String, одинаково удобен для &str и String без дополнительных выделений. По этой логике отдельная проверка «Borrowed и owned формы» на другом входе считалась бы лишней.
Cow всегда выделяет новую строку, чтобы унифицировать владение. Следовательно, поведение `std::borrow::Cow` считалось бы одинаковым для всех допустимых типов.
Вопрос 26 из 30
Что проверяет `typical_user_flow`, если не расширять вывод за пределы выполненного пути?
Rust Rust · Тестирование и инструменты Cargo Копировать
// tests/public_api.rs
use mylib::Config;
#[test]
fn typical_user_flow() {
let cfg = Config::builder().timeout_ms(500).build().unwrap();
assert_eq!(cfg.timeout_ms(), 500);
}
# cargo test --test public_api
# cargo semver-checks # внешний инструмент
Диагностика инструмента сама однозначно подсказывает безопасное исправление, поэтому разбирать контракт отдельно не нужно.
Если обычный путь проходит, поведение при отмене и повторном входе можно считать следствием того же теста. Из этого следовало бы, что иной порядок операций для `typical_user_flow` ничего не меняет.
Если сценарий проходит в debug-сборке, в release и на другой целевой платформе результат будет тем же. В результате `typical_user_flow` считали бы безопасным и на путях, которых пример не выполняет.
Первый тест проверяет поведение текущего API, второй сравнивает публичную поверхность с предыдущим релизом и ищет известные semver-нарушения.
Отсутствие ошибки компиляции уже доказывает нужное свойство, поэтому поведение можно не проверять. Из этого следовало бы, что иной порядок операций для `typical_user_flow` ничего не меняет.