Практическая ситуация: почему ограничение обратного вызова на работу с любой длительностью заимствования выражают через for<'a>, а не через один параметр времени жизни?
База 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
Что гарантирует аннотация dyn Trait + 'a и почему она не задаёт срок жизни самого объекта?
Объясните механизм отношения «время жизни 'a дольше 'b»: какой вывод о допустимом использовании ссылки следует из этой связи?
Практическая ситуация: объясните, почему одна передача удовлетворяет ограничению T: 'static, а другая — нет.
fn accept<T: 'static>(_: T) {}
fn main() {
{
let text = String::from("hello");
accept(text);
}
{
let text = String::from("hello");
accept(&text); // ошибка компиляции
}
}
Может ли явная аннотация времени жизни продлить срок существования значения, на которое ссылается ссылка?
Разбор последствий: означает ли одна и та же аннотация времени жизни у двух входных ссылок, что вызывающий обязан предоставить ссылки с одинаковым сроком действия?
Как параметр времени жизни у структуры, содержащей ссылку, ограничивает срок существования экземпляра?
В каких случаях Rust требует явных аннотаций времени жизни в сигнатуре функции, хотя ссылки уже присутствуют в параметрах?
Как аннотация времени жизни в сигнатуре функции связывает входную ссылку с возвращаемой?
В каком порядке Rust уничтожает несколько локальных переменных, если они находятся в одной области видимости?
В чём принципиальная разница между клонированием и перемещением String с точки зрения владения и выделенной памяти?
При попытке создать изменяемое заимствование, какую роль играет изменяемость переменной-владельца?
Как выбор получателя метода по владению или по заимствованию определяет, останется ли объект доступен после вызова?
При затенении имени вместо присваивания, что происходит с прежним владельцем значения?
Что означает ограничение T: Sync и почему оно связано с безопасной передачей &T между потоками?
Как lifetime-параметр структуры ограничивает срок жизни экземпляра, содержащего заимствованное поле?
Что происходит с владением String, когда в функцию, ожидающую &str, передают ссылку на эту строку?
Почему обращение к элементу коллекции по индексу не позволяет переместить из неё значение, не реализующее Copy?
Почему неизменяемую ссылку можно копировать, а изменяемую — нельзя?
Разберите ограничение: почему Rust запрещает переместить значение, не реализующее Copy, через неизменяемую ссылку, даже если исходный владелец больше не будет использован?
Показано 241–260 из 348