К каким последствиям приводит добавление нового варианта в перечисление Rust для уже существующего сопоставления match?
База Hintsage
Rust Core
Типы, pattern matching, modules и базовая семантика.
Практика
Вопросы: Rust Core
Ситуация: функция объявлена в одном модуле без pub, а вызывается из соседнего модуля того же crate. Что произойдёт при компиляции?
Как Rust определяет, перемещается ли значение при связывании с ним через шаблон?
Что произойдёт, если в операторе let Rust использовать шаблон, который может не совпасть со значением?
Объясните механизм типа !: почему расходящиеся выражения могут использоваться там, где ожидается значение другого типа?
При каких условиях Rust выбирает для неаннотированного целочисленного литерала тип i32, а когда выводит другой целочисленный тип?
Что делает Rust с именем переменной в шаблоне, если такое имя уже существует во внешней области видимости?
В API нужно исключить случайную передачу идентификатора заказа вместо идентификатора пользователя. Скомпилируется ли вызов load(order) и почему?
type UserId = u64;
type OrderId = u64;
fn load(id: UserId) {
println!("{id}");
}
fn main() {
let order: OrderId = 42;
load(order);
}
Разберите механизм: как сопоставление ссылочного значения с обычным структурным шаблоном влияет на тип и владение переменными, связанными в этом шаблоне?
Сравните use и pub use: какой из них меняет публичный API модуля?
Разбор последствий: почему ветвь match с дополнительным условием не считается Rust полностью покрывающей соответствующий шаблон?
Какое правило приватности Rust определяет доступ дочернего модуля к приватному элементу родителя?
При разборе шаблона с @ как Rust одновременно сохраняет всё сопоставленное значение и связывает его внутреннюю часть?
В чём состоит семантическая разница между выражением с точкой с запятой и тем же выражением без неё в Rust?
Представьте модуль, где тип и функция имеют одинаковое имя: как Rust определяет, какое имя искать в конкретном месте?
Функция возвращает ссылку на значение, созданное внутри неё: каким образом Rust доказывает, что такой результат небезопасен?
Объясните механизм: почему impl Trait в возвращаемом типе функции означает один конкретный тип для всех успешных возвратов, а не «любой тип, реализующий trait»?
Зачем модулю Rust нужен модификатор pub(crate), если pub уже делает элемент доступным?
Чем затенение имени отличается от присваивания существующей переменной в Rust?
Как Rust определяет тип выражения if, если его ветви имеют разные типы?
Показано 1–20 из 49