Size: a a a

Rust — русскоговорящее сообществo

2020 March 16

В

Вафель in Rust — русскоговорящее сообществo
Berkus Decker
тривиальные имплементации borrow(_mut)() из стд не инлайнились без #[inline]
Да, да, я помню. Я только про always говорил
источник

В

Вафель in Rust — русскоговорящее сообществo
Андрей Власов
@WaffleLapkin
Не сталкивался?
Не, не сталкивался и в std вроде так-же делают. Не очень понимаю в чём проблема.

Ещё видел у @\oleganza лайфхак: можно в структуре хранить T: Borrow{,Mut}<impl Trait> или вроде того
источник

В

Вафель in Rust — русскоговорящее сообществo
Тогда это будет работать и для T, и для &{,mut} T
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Хм, ща попробую
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Вафель
Да, да, я помню. Я только про always говорил
да, это для @hirrolot
источник

В

Вафель in Rust — русскоговорящее сообществo
Андрей Власов
Хм, ща попробую
Во, нашёл: https://github.com/dalek-cryptography/bulletproofs/pull/313/files#diff-5f7738ec87cace41e11e1a97acc8cd9cR30

Но тут тип задан, тебе вероятно придёться PhantomData обмазаться.
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Спасибо. Он ещё и явные типы кое-где требует
источник

В

Вафель in Rust — русскоговорящее сообществo
Андрей Власов
Спасибо. Он ещё и явные типы кое-где требует
Не особо понял, не за что 👍
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Вот в _c1 он не смог вывести тип
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Кароч неважно, спасибо
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
Андрей Власов
Чтоб можно было написать женерик функцию, которой пофиг, ссылку ей дают или by-value
реализовать MyTrait для &T где T: MyTrait?

а в описании трейта просто разыменовка.. ?
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Андрей Власов
Это можно как-то лучше написать?
Я так и сделал?
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
Андрей Власов
Это можно как-то лучше написать?
ыгы. но иногда лучше T::method(self)
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
и лайф добавь
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Денис Котляров
и лайф добавь
Зачем?
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
ну. если не требует то ок, но обычно надо.

банально 'a, T    &'a
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
folex
Может в Cow обернуть?
а Cow... нуу..

Cow лучше использовать в ситуации где не важно будешь ли ты мучатся с лайфами но важно не использовать T.. + runtime там немного..

а так, методами runtime enum сравнивать при обращении..

в данной ситуации при возможности T с дженериком. лучше взять T.. но и понимать ограничения надо
источник

f

folex in Rust — русскоговорящее сообществo
Оке, я просто услышал “абстрагироваться над borrow/own”, и сразу подумал про Cow :)
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
folex
Оке, я просто услышал “абстрагироваться над borrow/own”, и сразу подумал про Cow :)
мысль то правильная в некоторой ситуации:) но вообще.. реализовать трейт для Cow... и требовать пользователя ковить.

странно:)
+ решение этих проблем через обертки... в итоге нутакое
источник

ДК

Денис Котляров in Rust — русскоговорящее сообществo
Андрей Власов
Это можно как-то лучше написать?
и это нормальная практика:). немного бесящая..

помню были даже пакеты которые через proc_macro делали то что вы делаете для одного типа на автомате (Box. &. &mut. T. ...)

(название могу вспомнить, но оно потребует от вас nightly. а nightly ради сокращения такой кучи. нутакое).

p.s типы &T. &mut T разные..
источник