172 похожих чатов

Я никак не могу найти нормальный сбалансированный подход к казалось

бы банальной проблеме - у нас есть список каких-то данных, и как обычно водится, он обернут в какую-нибудь структуру с узнаваемым именем.

Хочется манипулировать списком и не сойти с ума.
У нас есть пара вариантов как это сделать:

1. сделать структурку мутабельной и по-классике пихать туда новые данные, типа fn update(&mut self). Максимально простой подход со всеми вытекающими. Работает пока у нас один поток, иначе мы начинаем кушать кактус с Arc<Mutex<...>> и прочими прелестями

2. Использовать копи он врайт (так сказать функциональщина на пол шишечки), который ушатает производительность в ноль и сожрет все ресурсы в любом мало мальски работающем приложении https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=ddf9272edeee2f59d0ebf92d65dddbc5

3. взять помесь функциональщины и плюс съемулировать джаву или любой другой язык с GC.
То есть напихать вместо данных, ссылки на данные и тогда производительность пункта 2 хоть как-то улучшиться, только непонятно почему я корячусь и эмулирую джаву тогда? Зачем мне тогда все эти прелести без гарбадж коллектора?
struct Data {
list: Vec<Rc<Data>>
}
собственно на каждую вставку пересоздавать лист, только теперь из-за того что у нас ссылки, по идее должно быть подешевле в целом по больнице

4. Не извращаться, а взять наконец нормальные персистентные коллекции и писать в функциональном виде.

Четвертый вариант был бы наверное идеальным, если бы не ржавое сообщество, залупившееся непонятно почему и уперлись в классические структуры данных.

В итоге ты стоишь раком и не можешь разогнуться, потому что раст остановился где-то на пол пути к функциональщине и в итоге ни один из способов не работает нормально, всё через жопу. Ходишь по кругу между этими подходами и ни один из них не подходит как полноценное решение

непонятно что с этим делать, а ведь это самая базовая вещь которая нужна чуть ли не каждый день

люди добрые, вразумите, что делать, ну или просто пните ногой и скажите что все не так однозначно и я ничего не понимаю

11 ответов

21 просмотр

1 - ну так каналы используй, чтобы с мутексами не мучатся; 4 - с растом такая история что те проблемы мутабельности, которые в чистой функциональщине решаются запретом оной, в расте решаются его системой типов

Mister Tomato- Автор вопроса
Александр
1 - ну так каналы используй, чтобы с мутексами не ...

1. каналы не даются бесплатно, появляется асинхронное взаимодействие на ровном месте от чего возрастает сложность 4. а можете пример показать пример а то не очень понятно что вы имеете ввиду?

Александр
1 - ну так каналы используй, чтобы с мутексами не ...

>системой типов Не, вообще не :D, она тут много менее мощная, чем в фпшках

Александр Ф. 🇷🇺
>системой типов Не, вообще не :D, она тут много ме...

тут нельзя определённо сказать более или менее, она другая, и для системного программирования с его большой императивностью, по идее, более подходящая

А что не так с мьютаксом?

Для многопоточного сценария можно посмотреть в сторону lock-free алгоритмов и структур данных Не нашел доклад, который мне запомнился больше всего, но вот другой https://youtu.be/XKODaZgKcnE?si=bkPd8HQs0_68oVu6

dj.maxus
Для многопоточного сценария можно посмотреть в сто...

Скорее всего уже есть крейты с lock-free контейнерами

dj.maxus
Для многопоточного сценария можно посмотреть в сто...

Вот! Очень понравился доклад https://youtu.be/Z-2siR9Ki84?si=h3GIvMQ9z3hTu9Gt

QSBR не пробовали?

Смотрел про Yoke?

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта