Vladimir
сам же говоришь _ этим, заткнуться варнингам раста
Anonymous
тип функции говорит что она потребляет ресурс
это не аргумент, варнинг не только о типах
Alexander
т.е. если написать a там. а не _, то будет warning?
Anonymous
да
Alexander
а ну это про другое warning
ozkriff🇺🇦
ты хочешь странного и магического
Alexander
не в счет
Alexander
тип = сигнатура
Vladimir
а ну это про другое warning
варнинг это вообще подсказка
Anonymous
ну
Anonymous
^^^
Vladimir
глупо требовать подсказок по каждому чиху. Темболее как ты хочешь по другому?
Alexander
т.е. перечисление аргументов и возвращаемого типа
Vladimir
ты же понимаешь, что хуже когда варнинги сыпятся без причины
Anonymous
ну блин
Alexander
A -> () говорит, что функция потребляет A и его нету
Anonymous
это же полезно когда у тебя нет тела функции
ozkriff🇺🇦
если я правиьно понял, предупреждения с таким глубоким анализом, как ты хочешь, сломают почти весь уже существующий код
Alexander
если она тайпчекнулась, то никакого warning-а или ошибки при вызове быть не должно
Vladimir
а в магическом патерне _
Vladimir
он говорит "заткнись раст, я знаю что я делаю"
Anonymous
ну хз
Vladimir
ты можешь сделать let _ = var
Alexander
про неиспользуемую переменную это подсказка исходящая из того, что если переменную объявили, но не использовали, то наверное забыли
Vladimir
и блин, _ не юзается
Alexander
оно не может быть не локальным
Alexander
тем более что fn (_:A) {} на самом деле это fn (_:A) { освободи-ка-мне(A) }
Alexander
т.е. A там используется
Alexander
то что выше неформально и handwaving
Anonymous
да и в мейне тоже самое
Anonymous
что за аргумент
Alexander
что такое агрумент?
Anonymous
fn main() { let a = 1; }
Anonymous
a юзается имплицит дропом
Alexander
нет, тут другое дело
Anonymous
а раст тупой и говорит что не юзается
Anonymous
да?
Alexander
ты объявил переменную специально, но никуда явно не передал
Alexander
и компилятор предполагает, что ты забыл
Alexander
и говорит предупреждение
Anonymous
ну вот и здесь тоже подобное
Alexander
нет
Alexander
ты тут явно передал переменную в функцию
Anonymous
возможно ты не знаешь, что функция пока что не использует какой-то из аргументов
Alexander
т.е. ты явно её использовал
Alexander
функция не может не использовать
ozkriff🇺🇦
мне кажется что разговор уже сделал три или четыре цикла
Alexander
ты ей ownership отдал
Alexander
нет
Anonymous
meme не использует
Anonymous
даже если ты ей отдал владение
Alexander
: /
кана
meme не использует
Так meme же освобождает (память) переменной, нет?
кана
Выше писали
Vladimir
блин
Vladimir
давайте минифицируем пример: let _ = 1i32;
Vladimir
как видишь тут о функции речь не идет
Vladimir
паттерн такой, он же юзается в сигнатурах функции
Anonymous
а хотя да 🤔
Anonymous
если для эффектов только то варнинг лишний
Alexander
а можно я тупые вопросы позадаю?
Ilya
Надеюсь вопросы по радфему?
Alexander
я не шарю, так что по имлементации раста
Alexander
вот у нас есть какой-нить A и для него трейт Drop
Anonymous
Забавный у них шебанг
где ты увидел шебанг
Alexander
и какой-нить код вида: fn a() -> let a = A:new() a.drop() blablabla
Alexander
я же могу так писать? или явно вызывать дроп нельзя?
Anonymous
drop(a)
Ilya
ага
Ilya
drop(a)
Ilya
а так все норм, да
Alexander
если могу, то с помощью какой магии раст отмечает, что a уже дропнут и его не надо дропать при выходе из скоупа
Alexander
технически
Anonymous
хранит лайфтаймы?
Vladimir
Смотри, вот та функция meme
Vladimir
Это и есть дроп