Size: a a a

2020 May 13

RP

Roman Proskuryakov in rust_offtopic
давай нетривиальный
источник

ML

Mike Lubinets in rust_offtopic
Mikail Bagishov
fn foo<'a>(left: &'a str, right:&'a str, stonks:&str) -> &'a str{
   match stonks {
       "first"=> left,
        "second"=> right,
       _ => panic!("not stonks")
   }
}
По сигнатуре подобной функции foo без аннотаций невозможно вывести лайфтайм возвращаемого значения однозначно
источник

ML

Mike Lubinets in rust_offtopic
По сигнатуре == у тебя есть хедер и ты линкуешься к библиотеке
источник

ML

Mike Lubinets in rust_offtopic
Доступа к реализации для ее анализа нет
источник

RP

Roman Proskuryakov in rust_offtopic
верно. поэтому можно аннотировать ручками.
источник

RP

Roman Proskuryakov in rust_offtopic
У раста тоже проблемы с выводом типов: https://github.com/rust-lang/rust/issues/71838
Поэтому расту тоже нужны аннотации
источник

ML

Mike Lubinets in rust_offtopic
Дак да
источник

ML

Mike Lubinets in rust_offtopic
Roman Proskuryakov
У раста тоже проблемы с выводом типов: https://github.com/rust-lang/rust/issues/71838
Поэтому расту тоже нужны аннотации
Хех, ну вот это недоработка
источник

ML

Mike Lubinets in rust_offtopic
Mike Lubinets
По сигнатуре подобной функции foo без аннотаций невозможно вывести лайфтайм возвращаемого значения однозначно
А тут фундаментальная проблема
источник

RP

Roman Proskuryakov in rust_offtopic
@mersinvald  Почему?
источник

ML

Mike Lubinets in rust_offtopic
Что именно почему?
источник

RP

Roman Proskuryakov in rust_offtopic
почему фундаментальная проблема?
источник

ML

Mike Lubinets in rust_offtopic
Потому что данных не хватает
источник

ML

Mike Lubinets in rust_offtopic
Без аннотаций
источник

ML

Mike Lubinets in rust_offtopic
И хрен с этим что сделаешь
источник

RP

Roman Proskuryakov in rust_offtopic
так и расту не хватает
источник

ML

Mike Lubinets in rust_offtopic
Так с этим никто и не спорит)
источник

VS

Victor Sapiens in rust_offtopic
Stanislav Popov
потому что сраная вебня ниодна не может в монотред
Блин, вы с Голдштнйном стоите друг друга. Один не хочет использовать Реакт на фронте другой не хочет мултитред или акторы на беке. Уууу блин. Молодцы, люблю вас 😁
источник

ML

Mike Lubinets in rust_offtopic
Я просто обратил внимание на то что в таком кейсе это не раст хреново лайфтаймы выводит, а различие дизайна: раст неоднозначные лайфтаймы заставляет писать явно by design, даже если бы их можно было выводить из тела имплементации, как в твоём примере выше.
Чтобы они всегда были однозначно отражены в сигнатуре и были очевидны вызывающему без ковыряния в кишках.
источник

RP

Roman Proskuryakov in rust_offtopic
Mike Lubinets
Я просто обратил внимание на то что в таком кейсе это не раст хреново лайфтаймы выводит, а различие дизайна: раст неоднозначные лайфтаймы заставляет писать явно by design, даже если бы их можно было выводить из тела имплементации, как в твоём примере выше.
Чтобы они всегда были однозначно отражены в сигнатуре и были очевидны вызывающему без ковыряния в кишках.
lifetime elision - это что?)
ну и в С++ можно явно написать лайфтаймы
источник