Size: a a a

2020 April 28

p

polunin.ai in rust_offtopic
в целом пофиг, не пофиг когда ты возвращаешь ссылку из функции
источник

SP

Stanislav Popov in rust_offtopic
ну вот на этом я залипаю как раз
источник

SP

Stanislav Popov in rust_offtopic
вернее мне надо сохранить ссылку
источник

SP

Stanislav Popov in rust_offtopic
а обьект на который ссылка никак не связать с тем куда идет ссылка
источник

r

red75prime in rust_offtopic
Stanislav Popov
хочется передавать везде ссылки и насрать где живет обьект
Оно так не работает. Нельзя иметь ссылку на объект в scope, где этот объект ещё не создан или уже уничтожен. Если нужно именно так, то для этого есть Rc
источник

EG

Emmanuel Goldstein in rust_offtopic
Я окончательно упоролся
источник

EG

Emmanuel Goldstein in rust_offtopic
У меня into_iter переворачивает вектор
источник

EG

Emmanuel Goldstein in rust_offtopic
А блджад
Т. е. если я делаю .inspect().rev() или .map().rev(), то мап у меня тоже выполнится в обратном порядке
источник

EG

Emmanuel Goldstein in rust_offtopic
Это понятно, если задуматься, но неестественно для нормального человека, читающего код слева-направо
источник

AK

Alexander Krivitskiy in rust_offtopic
Stanislav Popov
она простая но непонятно зачем явно их описывать и всякие + a добавлять
Было бы хорошо иметь какую-то шпаргалку по лайфтаймам, и как они ограничивают вызов функций.

Типа когда проставляем лайфтаймы так

fn<'a, T>(a1: &'a T, a2: &'a T) -> &'a T

то можем вызывать функцию так-то, но не можем так-то

fn<'a, 'b: 'a, T>(a1: &'a T, a2: &'b T) -> &' a T

Сможем ещё и так функцию вызывать.

Для структур тоже самое сделать. Побольше примеров накидать и не было бы с ними таких проблем. Но я ничего подобного не встречал :(
источник

p

polunin.ai in rust_offtopic
Если у тебя 'b: 'a у тебя два варианта:
1. Вешаться
2. Переписать архитектуру тобы убрать его
источник

p

polunin.ai in rust_offtopic
Alexander Krivitskiy
Было бы хорошо иметь какую-то шпаргалку по лайфтаймам, и как они ограничивают вызов функций.

Типа когда проставляем лайфтаймы так

fn<'a, T>(a1: &'a T, a2: &'a T) -> &'a T

то можем вызывать функцию так-то, но не можем так-то

fn<'a, 'b: 'a, T>(a1: &'a T, a2: &'b T) -> &' a T

Сможем ещё и так функцию вызывать.

Для структур тоже самое сделать. Побольше примеров накидать и не было бы с ними таких проблем. Но я ничего подобного не встречал :(
И да, конкретно здесь 'а: 'б не нужно никогда, достаточно просто 'а
источник

p

polunin.ai in rust_offtopic
Блин нужно выкатить статью какую-то по лайфтаймам, не думал что столько людей всерьез не понимают их.
источник

AK

Alexander Krivitskiy in rust_offtopic
polunin.ai
Если у тебя 'b: 'a у тебя два варианта:
1. Вешаться
2. Переписать архитектуру тобы убрать его
Ну зачем-то же его ввели))) Для вложенных лайфтаймов, насколько помню.

Ещё и for<'a> есть. Но зачем он уже забыл.
источник

p

polunin.ai in rust_offtopic
Alexander Krivitskiy
Ну зачем-то же его ввели))) Для вложенных лайфтаймов, насколько помню.

Ещё и for<'a> есть. Но зачем он уже забыл.
Я не видел ни в одном работающем Раст коде 'а: 'б
источник

p

polunin.ai in rust_offtopic
for<'a> что-то странное, сам ещё не разобрался с ним
источник

r

red75prime in rust_offtopic
Вот, извращённый пример
trait Foo<'a> {
   fn push(&mut self, p: &'a u32);
}

fn foo<T>(mut foo: T)
where
   T: for<'a> Foo<'a>
{
   let a = 1;
   foo.push(&a);
}
источник

r

red75prime in rust_offtopic
Лайфтайм какой-то нужен, но как дженерик его передать нельзя.
источник

p

polunin.ai in rust_offtopic
red75prime
Лайфтайм какой-то нужен, но как дженерик его передать нельзя.
Почему?
источник

KR

Kai Ren in rust_offtopic
polunin.ai
Я не видел ни в одном работающем Раст коде 'а: 'б
Посмотри desugar async_trait, к примеру.
источник