“отдать навсегда” в функцию значение, при этом, чтобы эта функция могла на аргументе вызвать метод трейта вида I<'p>::call(&'p self)?
Долго объяснять, но явный лайфтайм на self нужен, убрать не могу.
where for<'a> P: I<'a>
Спасибо
А этот for<‘a> умеет “спанниться” более, чем на один баунд в where?
мне видится, что да. Сейчас попробую минимальный кейс сделать
Если я правильно понял вопрос, то нет.
Хотелось выразить несколько типов относительно этого локального лайфтайма.
Удивительно, но как-то само разобралось
например? какой бы баунд ты хотел написать?
Просто сделал for<‘here_p, ‘here_d> Interface<‘here_p, ‘here_d, …>
for<'a> означает что лайфтайм 'a выводится внутри функции и ограничен временем выполнения функции. Думаю можно просто для каждого типа сделать for<'a> и будет хорошо
Language: rust Source: trait Foo<T> {} impl<T, F> Foo<F> for T where F: for<'a, 'b> Fn(&'a &'b T) {} fn main() {}
Хотел, сказать, что ‘’p_outer: ‘p_introduced_with_for’, но, оно похоже всегда справедливо (типа, лайфтайм из фора — не больше функции, а лайфтайм из параметров функции — никогда не меньше функции).
Вот пример. Тут хрен знает какой там лайфтайм и он не важен но тайпчекер требует.
Вариант с ничем не зарестрикченными свежевведёнными лайфтаймами казался слишком простым, чтобы заработать… https://pastebin.com/raw/2DkqzX0g
Можете, пожалуйста код на play.rust-lang.org заливать, чтобы его сразу запускать можно было)
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e3650caf2051f988e0a2b456c03ee0d3
Что означает : 'p справа сверху? я что-то не понимаю
что Self должен жить как минимум 'p
Обсуждают сегодня