Nikita
Sherzod
но с усами
Sherzod
Наверное вся в папку
Tuntz
есть поле Option<Option<T>> - как переделать, чтобы можно было различать None и Some(None(...))?
Tuntz
Можно так, но это самописный костыль. Есть какое-то стандартное решение?
#[derive(Serialize, Deserialize)]
struct ValueContainer { value: T }
Option<ValueContainer<Option<T>>>
Loo
Tuntz
различать при (де-)сериализации json через serde
Tuntz
недописал
Loyd
Так от формата зависит
Loyd
Если таргентный формат не умеет в алгтд (тот же json), то только костылить
Loyd
Хотя я удивлён, почему до сих пор не придумали поверх json tagged union-ов, скажем использовать __tag
Sergey
Loo
если ты так хочешь, то юзай
Loo
https://serde.rs/field-attrs.html#serdeserializewith--path
Loo
https://serde.rs/field-attrs.html#serdedeserializewith--path
Tuntz
Loo
Loo
Tuntz
важен формат, но не важно сериализованное содержимое
Sergey
ого. Надо глянуть
https://serde.rs/enum-representations.html#internally-tagged
պլհկ
2 раст сервиса и так поймут
պլհկ
не понял зачем костыли?
Tuntz
Vladimir
Vladimir
если будет два варианта с одним внутренним типом
Vladimir
struct Enum {
Variant1 (String),
Variant2 (String),
}без тега будет до первого удачного парсинга, т.е.
Enum::Variant2("abc".to_owned)).serialize().deserialize == Enum::Variant1("abc".to_owned())
Cuno
Vladimir
Но тег можно добавить и это не проблема
պլհկ
https://play.rust-lang.org/?gist=2a27a442ef21ca52cabb8701e94d9522&version=stable&mode=debug
Sergey
Cuno
https://play.rust-lang.org/?gist=346b98c2793aec9fc2551b69795e4154&version=stable&mode=debug
Cuno
@notplhk Some(None) - проблемный кейс
Sergey
Αλεχ
Αλεχ
https://github.com/rust-lang/rfcs/pull/2426#issuecomment-391327320 - ставьте минусы кто может
Αλεχ
да я тоже подумал
Αλεχ
это это fizzbuzzenterpriseedition
Αλεχ
вариация на тему
-__-
Αλεχ
Αλεχ
просто universal impl trait уже проскочил
Αλεχ
теперь я предпочту быть на страже стейбла
Sergey
бля
Sergey
я вот думаю
Sergey
а нахуя
Sergey
нахуя там throw
Sergey
try
Sergey
они ебанулись?
Cat
да
Sergey
раст вроде решил проблему эксепшенов, но кто-то хочет опять все сломать нахуй
Cat
толерастия дривен девелопмент
Berkus
они ебанулись?
пришли джависты и такие, А чо. где сроу, где ДжаваБинАбстрактФактори?
Berkus
как тут бросить эксепшен
Cat
Sergey
Sergey
пизда языку с такими предложениями
Cat
+
t.me/rustjerk/27391
Cat
что ж, там уже final comment period, так что поздравляю
Cat
нужно будет написать CI линтер, чтобы при наличии слов "throw" и "impl Trait" в аргументе, фейлил пайплайн
Αλεχ
Это RFC на первом месте по количеству 👎.
А на втором вот что: https://github.com/rust-lang/rfcs/issues/1925 . И кстати его благополучно приняли.
Так-что всё за то что это тоже пройдет
Cat
это https://github.com/rust-lang/rfcs/issues/1925
Cuno
Cuno
хотя вот резерв ключевых слов мерджить уже собираются
Cat
postponed же
да, но..
> No concerns currently listed.
Kerrigan
кстати, я могу без проблем прицепиться к плюсовой либе?
Vladimir
ни у раста, ни у с++ нету стабильного ABI
Anonymous
Kerrigan
мда
Kerrigan
https://zeroc.com/downloads/ice похоже другого выхода нет
Anonymous
Ну bindgen вроде умеет к плюсам генерить биндинги, но там много ограничений.
Αλεχ
https://github.com/anp/rfcbot-rs/pull/210
Αλεχ
ахахахах
Αλεχ
ахахах
Αλεχ
ха
Αλεχ
мда
Kerrigan
хотя... возможно я смогу провернуть всё через grpc