Size: a a a

2020 February 21

A

Aikidos in rust_offtopic
Gymmasssorla
На шарпах по-идее проще и лучше должно получится наоборот, там хотя бы обобщённые типы есть, есть возможность писать адапторы к классам. Посмотри в src/ceh4.h - там чёрт ногу свернёт
Возможно ты и прав. У меня была задача написать очень стабильный сервис т.к. от него зависело обновление цен на торговых точках.
Я решил взять резалты, чтобы не работать с исключениями и чётко обрабатывать все варианты ошибок и т.п.. Получилось ужасно. Вернее....сервис то получился стабильным, но код ужасно читался. Вывод типов был никаким.

К примеру, есть в шарпе Exception и от него производный InvalidOperationException.

Когда выполняешь функцию, которая возвращает Result<T, InvalidOperationException>, то результат автоматом не преобразовать в Result<T,  Exception>. Нужно руками вызывать MapError и там даункастить. Короче, портянки с такими преобразованиями занимали кучу места. Вторая проблема - IDisposable. Если в AndThen создал "неуправляемый" объект, то лучше там его и освобождать. Поэтому выходили AndThen в AndThen'ах....ух...
источник

G

Gymmasssorla in rust_offtopic
Aikidos
Возможно ты и прав. У меня была задача написать очень стабильный сервис т.к. от него зависело обновление цен на торговых точках.
Я решил взять резалты, чтобы не работать с исключениями и чётко обрабатывать все варианты ошибок и т.п.. Получилось ужасно. Вернее....сервис то получился стабильным, но код ужасно читался. Вывод типов был никаким.

К примеру, есть в шарпе Exception и от него производный InvalidOperationException.

Когда выполняешь функцию, которая возвращает Result<T, InvalidOperationException>, то результат автоматом не преобразовать в Result<T,  Exception>. Нужно руками вызывать MapError и там даункастить. Короче, портянки с такими преобразованиями занимали кучу места. Вторая проблема - IDisposable. Если в AndThen создал "неуправляемый" объект, то лучше там его и освобождать. Поэтому выходили AndThen в AndThen'ах....ух...
А написать обязательно на C# было требованием?
источник

A

Aikidos in rust_offtopic
Gymmasssorla
А написать обязательно на C# было требованием?
Да, мне знакомые тоже говорили, что тут лучше взять другой язык, но на работе требование было именно C#.

Да и там очень много было работы с файлами от поставщиков ZIP, RAR, GZIP, XLSX, XLS, DBF...на том же расте сложно с этим всем. Нужно было бы очень много кода написать самому. Это не проблема, но условие было - написать за месяц. Т.к. старый сервис, который брал на себя часть работы, не вывозил потока документов от поставщиков.
источник

A

Aikidos in rust_offtopic
Про много кода, это я про крейты
источник

A

Aikidos in rust_offtopic
Я тогда смотрел, как в расте с ZIP и там в сурсах человек проверял не заголовок файла, а расширение)
источник

A

Aikidos in rust_offtopic
Если имя файла заканчивается на .zip, то это архив)
источник

A

Aikidos in rust_offtopic
А у нас поставщики вообще могли файлы без расширения присылать. Не поймёшь, что это за формат
источник

G

Gymmasssorla in rust_offtopic
Ясно-понятно
источник

DS

Doge Shibu in rust_offtopic
Aikidos
Да, мне знакомые тоже говорили, что тут лучше взять другой язык, но на работе требование было именно C#.

Да и там очень много было работы с файлами от поставщиков ZIP, RAR, GZIP, XLSX, XLS, DBF...на том же расте сложно с этим всем. Нужно было бы очень много кода написать самому. Это не проблема, но условие было - написать за месяц. Т.к. старый сервис, который брал на себя часть работы, не вывозил потока документов от поставщиков.
Взял бы F# либо вообще скалу.
источник

DS

Doge Shibu in rust_offtopic
В скале как раз нужное свойство с сабтайпингом элементарно выразимо
источник

A

Aikidos in rust_offtopic
Doge Shibu
В скале как раз нужное свойство с сабтайпингом элементарно выразимо
Да, можно было бы взять скалу
источник

DS

Doge Shibu in rust_offtopic
Т.к. там аннотации по поводу ковариантности/контрвариантности можно ставить на любой дженерик тип, а не только интерфейс
источник

DS

Doge Shibu in rust_offtopic
На самом деле даже интересно, почему в шарпе именно такое ограничение и связано ли это с рантаймом и reified дженериками
источник

NL

Nick Linker in rust_offtopic
На безрыбье и рак - щука, спасибо. Выглядит не ужас-ужас. А что там с exhaustiveness analysis?🧐
источник

G

Gymmasssorla in rust_offtopic
Nick Linker
На безрыбье и рак - щука, спасибо. Выглядит не ужас-ужас. А что там с exhaustiveness analysis?🧐
Тег у меня _Bool, поэтому умный компилятор и статический анализатор должен закричать
источник

G

Gymmasssorla in rust_offtopic
В будущем я планирую переусложнённый код, использующий эту библиотеку, прогнать через cppcheck и scan-build (статический анализатор LLVM). Посмотрим, что будет
источник

NL

Nick Linker in rust_offtopic
👍!
источник

RP

Roman Proskuryakov in rust_offtopic
Alex Zhukovsky
@gitkpp ты столик на себя заказал в итоге?
еще вчера пытался. сказали уже нельзя бронить
источник

RP

Roman Proskuryakov in rust_offtopic
типа там за неделю. пафосное место.
источник

А

Андрей in rust_offtopic
Народ, а никто случайно не видел пример связки актикса с фронтом на васме? Хочется посмотреть на best practices такой связки, а не копать опытным путем
источник