И я кое что не понял, а точнее...
What if there's more than one choice of input lifetimes to map to an output lifetime? In this case, the compiler can't figure out what to do:
pub fn find(haystack: &[u8], needle: &[u8]) -> Option<&[u8]> {"
Я честно не понимаю почему компилятор не может понять что нужно делать. Возможно дело в том что я абсолютно неправильно воспринял то, что хотели донести этим абзацом, но я понял это так. Опасность такого случая, скорее всего, в том, что компилятор не знает выходного значения (это может быть или haystack или needle), что опасно тем, что у любого параметра может закончиться лайфтайм, даже если один из них может быть выходным значениям. (почти уверен, что я сказал полную ерунду).
Пожалуйста исправьте мой домысел, если я неправильно понял 🙏.
из сигнатуры компилятор может сделать вывод, что ты вернёшь ссылку либо на что-то в haystack, либо на что-то в needle но он не может определить, откуда именно, поэтому требует указать это явно
"откуда именно" - подразумевается из какого лайфтайма?
Типа того, да: нужно привязать время жизни возвращаемой ссылки к одному из аргументов
Ещё, например, можно в функции с помощью шаблонов задать и связь входных лайфтаймов между собой. Например, если забаундить первый лайфтайм на второй, то в качестве выходного лайфтайма можно указать самый строгий из них. Тогда возможно вернуть ссылку на слайс из любого аргумента
Обсуждают сегодня