Что означает код ошибки Rust E0495?
Код ошибки E0495
кажется универсальным для множества различных ситуаций, в которых требования к сроку службы не могут бытьпомирились.Это сообщение уже говорит об этом, и существует огромное количество способов, которыми вы могли бы написать код, в котором время жизни не совпадает должным образом, возможно, поэтому его нет в списке с примерами в индексе ошибок.
Параметры типа, включая время жизни, всегда определяются вызывающей стороной.Глядя на ваш конкретный пример, сигнатура функции, подобная этой:
fn route<'a>() -> DynamicResponder<'a> { ... }
означает, что для любого времени жизни 'a
, выбранного вызывающей стороной, ссылки внутри возвращенного DynamicResponder<'a>
должны бытьдействительный.Но что могут быть ссылки внутри DynamicResponder<'a>
в этой ситуации?Они не могут быть ссылками на переменные в теле функции, потому что они живут только функцию.Аргументы отсутствуют, поэтому DynamicResponder<'a>
может ссылаться только на то, что находится вне функции, то есть на статике.
Вы можете исправить ошибку, удалив переменную времени жизни и установив параметр времени жизник единственной жизни, которая имеет смысл:
fn route() -> DynamicResponder<'static> { ... }