При вызове функции, ожидающей ссылку на срез строки, Rust принимает ссылку на String без явного преобразования. Какой механизм это обеспечивает?
База Hintsage
Программирование Rust
Язык Rust и безопасное системное программирование.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Rust.
Открыть раздел - 49 вопросов
Rust Core
Типы, pattern matching, modules и базовая семантика.
Открыть раздел - 50 вопросов
Владение и заимствование
Ownership, borrowing, moves и правила безопасной памяти.
Открыть раздел - 50 вопросов
Времена жизни
Lifetime annotations и связи времени жизни ссылок.
Открыть раздел - 49 вопросов
Traits и generics
Traits, bounds, generics, associated types и dispatch.
Открыть раздел - 50 вопросов
Конкурентность и async
Send/Sync, threads, channels, futures и async runtime.
Открыть раздел - 50 вопросов
Обработка ошибок
Result, Option, оператор ?, panic и проектирование ошибок.
Открыть раздел - 50 вопросов
Unsafe и память
Unsafe Rust, raw pointers, FFI и инварианты безопасности.
Открыть раздел
Практика
Вопросы: Программирование Rust
На границе Rust-кода отрицательное знаковое целое преобразуют в беззнаковое через as: какое значение получится и почему?
В сборочной конфигурации изменился режим с отладочного на релизный: как это влияет на переполнение знакового целого при обычной арифметике Rust?
В практической ситуации модуль переместили глубже в иерархии: как выбор между путями crate:: и super:: влияет на устойчивость ссылок на элементы?
Рассмотрите различие между размером значения и размером данных, на которые оно ссылается. Почему этот код допускает &str, но не допускает локальную переменную типа str?
fn length(s: &str) -> usize {
s.len()
}
fn main() {
let text = String::from("Rust");
let view: &str = &text;
println!("{}", length(view));
// let invalid: str = *"Rust";
}
Сравните представление опциональной ссылки и обычной ссылки в памяти: за счёт какого механизма они могут иметь одинаковый размер?
Как Rust различает const и static при требовании единственного адреса хранения глобального значения?
Какое правило Rust применяет к именам, связанным в альтернативных ветвях or-pattern?
Как Rust определяет тип выражения if, если его ветви имеют разные типы?
Чем затенение имени отличается от присваивания существующей переменной в Rust?
Зачем модулю Rust нужен модификатор pub(crate), если pub уже делает элемент доступным?
Объясните механизм: почему impl Trait в возвращаемом типе функции означает один конкретный тип для всех успешных возвратов, а не «любой тип, реализующий trait»?
Функция возвращает ссылку на значение, созданное внутри неё: каким образом Rust доказывает, что такой результат небезопасен?
Представьте модуль, где тип и функция имеют одинаковое имя: как Rust определяет, какое имя искать в конкретном месте?
В чём состоит семантическая разница между выражением с точкой с запятой и тем же выражением без неё в Rust?
При разборе шаблона с @ как Rust одновременно сохраняет всё сопоставленное значение и связывает его внутреннюю часть?
Какое правило приватности Rust определяет доступ дочернего модуля к приватному элементу родителя?
Разбор последствий: почему ветвь match с дополнительным условием не считается Rust полностью покрывающей соответствующий шаблон?
Сравните use и pub use: какой из них меняет публичный API модуля?
Разберите механизм: как сопоставление ссылочного значения с обычным структурным шаблоном влияет на тип и владение переменными, связанными в этом шаблоне?
Показано 321–340 из 348