Ну если я в теле функции складываю 2

числа А и B и возвращаю их сумму как результат функции. Разве не достаточно информации уже компилятору что бы понять что нужно использовать самый строгий из лайфтаймов от А или B, которые переданы в качестве аргументов ?

17 ответов

13 просмотров

Достаточно, в хаскелле вообще так boundы выводятся, этого дизайн-решения раста так не делать

Разве это не проблема яйца и курицы? Откуда брать ЛТ - из параметров переданных или из тела функции? По идее, проблему решили тем, что анализатор не лезет в код, а читает только сигнатуру

Nickolai Burtsev 👀
Ну выводить только если не указаны, не?

Выводить из чего? Из переданных параметров или из кода внутри?

mental stability🥺✨
Выводить из чего? Из переданных параметров или из ...

Я очень плохо понимаю как этот вывод работает, но по идее можно с начала пробовать из параметров, а потом уже из тела

Nickolai Burtsev 👀
Я очень плохо понимаю как этот вывод работает, но ...

Сейчас никак не работает - есть правила, которые просто расставляют параметры

О ЛТ в сигнатуре

mental stability🥺✨
О ЛТ в сигнатуре

Ну вот их компилятор в некоторых случаях выводит, разве нет?

Nickolai Burtsev 👀
Ну вот их компилятор в некоторых случаях выводит, ...

Нет, есть правила, которые он просто применяет. Сам он ЛТ в сигнатуре не напишет (то есть семантически он не понимает, равные они или нет)

Nickolai Burtsev 👀
Туплю, а в чём отличия?

В том, что по правилам у всех инпут параметров функции свой лайфтайм. И компилятору все равно, если это не так. Он не додумывает исходя из кода внутри (или из входных параметров), потому что; как я считаю, это проблема курицы и яйца

mental stability🥺✨
В том, что по правилам у всех инпут параметров фун...

Я всё-равно честно говоря не понимаю, где здесь курица и яйцо

А как он посмотрит и поймёт, по сигнатуре сложения? О нет, пошли смотреть внутрь.

Nickolai Burtsev 👀
Я всё-равно честно говоря не понимаю, где здесь ку...

Из кода функции пытаться понять баунды для ЛТ или из входных параметров? В мое голове тут просто рекурсия при анализе будет

doc
Только в случае дженнрика тип подставляет

Я про lifetime elision (хз как это перевести)

Так если я все правильно понял и прочитал...Компилятор же вообще не использует лайфтайм ссылки A или B в твоей функции для выхода. Вот к примеру сигнатура твоей функции. fn sum(a: &i32, b: &i32) -> i32 По правилам elision, если выходное значения не является ссылкой, но при этом присутствуют входные ссылки (то бишь параметры которые являются ссылками), то каждая входная ссылка имеет свой лайфтайм. То есть сигнатура твоей функции выглядит на самом деле так. fn sum(a: &'a i32, b: &'b i32) -> i32 При том что сигнатура валидная, можно мне кажется понять что компилятор не использует лайфтаймы входных ссылок в твоей функции.

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта