Size: a a a

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

2020 April 06

p

polunin.ai in Rust — русскоговорящее сообществo
Mikail Bagishov
Это очень неоптимально
Я другого варианта не вижу, если честно
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Эрик
Типа того, только синтаксис будет по типу Async::new()
По типу си шарпового
var task = new Task();
?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Не знаю, я не инсайдер.
источник

OA

Oleg Andreev in Rust — русскоговорящее сообществo
Я пишу п2п либу и думаю как лучше всего организовать типы сообщений, чтоб в либе были только Message::Hello, ::PeersList и ::Custom, а внутри Custom я мог уже мессаджи своего протокола воткнуть.

1. Если я сделаю Custom<Vec<u8>>, то будет лишнее копирование
2. Если я сделаю Custom<T> и serde, то у меня 'de везде будет болтаться
3. Если я сделаю Custom<T> и буду использовать Tokio Codec, то не очень понятно как и куда его прикрутить, и как композицию из нескольких кодеков делать, "внешнего" и "внутреннего"
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Там на асинк-стд есть п2п либа, может посмотришь как там реализовано?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Custom<Cow<>>?
источник

Э

Эрик in Rust — русскоговорящее сообществo
polunin.ai
Custom<Cow<>>?
А что с лайфтаймом?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Эрик
А что с лайфтаймом?
Ну разве что лайфтайм будет прикидываться далеко, неприятно, да
источник

С

Сергей in Rust — русскоговорящее сообществo
Custom<T> будет чисто статическая реализация. Пользователю самому придётся писать сериализацию, и он будет ограничен системой типов serde.
источник

С

Сергей in Rust — русскоговорящее сообществo
Custom<Vec<u8>> можно сделать динамически, не задействуя serde, и это можно написать с минимумом копирования, например передавая вектор по move-семантике. Тем более, что ты сам не собираешься его изменять внутри кода библиотеки. Можно даже посмотреть на то, чтобы заменить его на Bytes, тогда будет ещё ближе к TokioCodec
источник

С

Сергей in Rust — русскоговорящее сообществo
Если ты в либе никак не хочешь знать, что там за данные в Custom, а только гоняешь ихз туда-сюда я бы использовал Vec<u8> или Bytes. Если ты к типу внутри Custom хочешь применять какие-то требования и по сути дать созможность писать много разных протоколов с гарантиями на твоей стороне, то Custom<T> - твой путь
источник

С

Сергей in Rust — русскоговорящее сообществo
TokioCodec - совсем другая история, скорее обёртка. Не знаю, в каком контексте ты его рассматриваешь
источник

OA

Oleg Andreev in Rust — русскоговорящее сообществo
Сергей
Custom<Vec<u8>> можно сделать динамически, не задействуя serde, и это можно написать с минимумом копирования, например передавая вектор по move-семантике. Тем более, что ты сам не собираешься его изменять внутри кода библиотеки. Можно даже посмотреть на то, чтобы заменить его на Bytes, тогда будет ещё ближе к TokioCodec
а лучше Bytes или T: Buf сделать?
источник

С

Сергей in Rust — русскоговорящее сообществo
Oleg Andreev
а лучше Bytes или T: Buf сделать?
Я бы ещё про BufMut подумал. Выбор простой: больше возможностей для пользователя библиотеки против необходимости везде таскать за собой T: Buf.
источник

OA

Oleg Andreev in Rust — русскоговорящее сообществo
прочему BufMut?
источник

С

Сергей in Rust — русскоговорящее сообществo
Oleg Andreev
прочему BufMut?
Внутри вашего Custom кто-то либо сможет менять содержимое и размер буфера, либо не сможет
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
ci раста подумывают целиком на github actions переложить https://github.com/rust-lang/blog.rust-lang.org/pull/558
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
давно пора
источник

H

Heorhi in Rust — русскоговорящее сообществo
имхо не пора
источник

H

Heorhi in Rust — русскоговорящее сообществo
та еще забагованая кака эти actions
источник